SQL 中CASE WHEN 使用
一、使用场景:
【场景】:数据库中某列包含 NULL 、‘1’、‘2’,其中‘1’代表男,‘2’代表女
【背景】:希望通过SQL查询出来的是‘’,男,女=》直接转换后的
姓名 sex age 张三 Null 32 李四 1 25 王五 2 67 赵六六 男 45 吴七 女 98 宋八一 3 23
二、CASE WHEN 公式
【公式一】:
CASE 表达式或字段 WHEN 值1 THEN 语句1; WHEN 值2 THEN 语句2; ... 【 ELSE 语句n; 】 END 【 CASE 】;
【公式二】:
CASE WHEN 条件1 THEN 语句1; WHEN 条件2 THEN 语句2; ... 【 ELSE 语句n; 】 END 【 CASE 】;
CASE WHEN 使用
【说明】:因为我要将性别代码转换成汉字,同时汉字的保留,并且NULL转换成空字符串,同时代码3为错误代码要将其转换成空字符串。
【写法】:
SELECT NAME, (CASE sex IS NULL THEN '' WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' WHEN sex = '3' THEN'' ELSE sex END ) sex FROM person_table
【理解】:当WHEN后的条件为true时将值赋值成THEN后面的值,否则都不匹配赋值成ELSE后的
注意
【注】:这里有一点需要注意,因为NULL和’1’、‘2’、'3’不属于同一类型,故 IS NULL 不能写在 WHEN后面