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语句,具体的转换语句是

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,

总结: 使用格式如下:

case 原表中的字段
when 原来的值1 then 新的值1
when 原来的值2 then 新的值2
when 原来的值3 then 新的值3
when 原来的值4 then 新的值4
else 
end as 新表中的字段
经验分享 程序员 微信小程序 职场和发展