Mysql-case when 使用!

  • A+
所属分类:SQL技巧

Mysql-case when 使用!

 

当我们在查询数据的时候,我们可能希望对于一些数字的枚举值展示出其实际的文案值
比如:性别1我们想显示男,2我们想显示女。

一、case 使用场景

1.1 简单函数

CASE case_value

WHEN when_value THEN statement_list

[WHEN when_value THEN statement_list] ...

[ELSE statement_list]

END CASE

1.2 case搜索函数

CASE

WHEN search_condition THEN statement_list

[WHEN search_condition THEN statement_list] ...

[ELSE statement_list]

END CASE

二、使用示例

2.1 简单case函数

case `gender`

when 1 then '男'

when 2 then '女'

else '未知'

end

2.2 case搜索函数

case

when gender = 1 then '男'

when gender = 2 then '女'

else '未知'

end

准备数据如下

create table if not exists test_user(

`id` bigint(20) not null AUTO_INCREMENT comment '主键自增ID',

`name` varchar(64) not null comment '姓名',

`gender` integer not null comment '性别,1: 男, 2: 女',

`country_code` integer not null comment '所属国家CODE',

primary key (`id`)

) charset = 'utf8mb4' comment '测试表';

一张参照表

国家

country_code

中国 100
美国 110
法国 120
雪国 其他

INSERT INTO `test_user` (`name`, `gender`, `country_code`)

VALUES

('清风', 1, 100),

('玄武', 2, 100),

('Kobe', 1, 110),

('John Snow', 1, 200),

('Peut-être', 0, 120);

三、实战示例

3.1 使用case简单函数

select `id`, `name`, `gender`,

(case `gender`

when 1 then '男'

when 2 then '女'

else '未知'

end) as '性别',

`country_code`

from test_user;

Mysql-case when 使用!

3.2 使用case搜索函数查询

select id, `name`, gender,

(case

when gender = 1 then '男'

when gender = 2 then '女'

else '未知'

end) as '性别',

country_code,

(case

when country_code = 100 then '中国'

when country_code = 110 then '英国'

when country_code = 120 then '法国'

else '雪国'

end) as '国籍'

from test_user;

Mysql-case when 使用!

案例4,

公司开发中遇见的一个问题,卡的种类的判断,如果卡的id中包含“CREDIT”则为信用卡,包含“DIBIT”则为借记卡,于是想到了使用case when的方式进行判断,由于有涉及到了包含匹配的问题,like %是首选,到网上搜了一下并经过实验证明case when like % 一块使用的正确性。

select

fcb.id as id,

fcb.status,

c.CUSTOMERNUMBER as customernumber,

c.FULLNAME as customerfullname,

b.FULLNAME as bankname,

f.DESCRIPTION as frpname,

case when b.id like '%CREDIT' then '信用卡' when b.id like '%DEBIT' then '借记卡' end as banktype

from FastPayCustomerBranch fcb ,frp f ,bank b ,customer c

where fcb.FRP_ID=f.ID and fcb.BANK_ID= b.ID and fcb.CUSTOMER_ID=c.id

规律如下:

Select

when column1 like '%包含内容%' then '结果1'

when column1 like '%包含内容%' then '结果2'

else '结果三' end as otherName,

from table

where 条件

如果大家有其他的方法,或者想要知道哪方面的办公技巧,下方评论哦~

 

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

Mysql-case when 使用!

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

  • 我的微信
  • weinxin
  • 我的知识星球
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: