SQL中的case when then else语句用法

欢迎访问个人原创博客:德鲁大叔撸代码

在做数据迁移的时候,碰到了需要转换的枚举类型,为了在sql中直接做转换,想到了用case when then else语句
例如有下面列表中的不同枚举值,需要从原来的库中迁移到目标库中,但是目标库和原来的库存在枚举值的差异

字段:证件照类型
原表中的枚举值:01-身份证 02-护照 04-军官证 03:港澳台通行证 05-回乡证 06-工商登记号 09-其他
目标表中的枚举值:00:身份证 01:护照 02:军官证 03:士兵证 04:回乡证 05:户口本 06:外国护照 07:其他 08:暂住证 09:警官证 10:文职干部证 11:港澳同胞回乡证
则需要做的转换是:
01-身份证 –》00 02-护照 –》01 04-军官证 –》02 03:港澳台通行证 –》11 05-回乡证 –》04 06-工商登记号 –》07 09-其他 –》07

在此就可以用case when then else语句,具体的转换语句是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CASE A .ID_TYPE
WHEN '01' THEN
'00'
WHEN '02' THEN
'01'
WHEN '03' THEN
'11'
WHEN '04' THEN
'02'
WHEN '05' THEN
'04'
WHEN '06' THEN
'07'
WHEN '09' THEN
'07'
ELSE
''
END AS legal_cert_type,

总结: 使用格式如下:

1
2
3
4
5
6
7
case 原表中的字段
when 原来的值1 then 新的值1
when 原来的值2 then 新的值2
when 原来的值3 then 新的值3
when 原来的值4 then 新的值4
else ''
end as 新表中的字段
坚持原创技术分享,您的支持将鼓励我继续创作!