CASE 表达式——SQL 学习一
CASE 表达式:简单 CASE 表达式(simple case expression)和搜索 CASE 表达式(searched case expression)两种写法
-- 简单 CASE 表达式
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
-- 搜索CASE 表达式
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
注:这两种写法的执行结果是相同的,“sex”列(字段)如果是 '1',那么结果为男;如果是 '2',那么结果为女。
简单 CASE 表达式正如其名,写法简单,但能实现的事情比较有限。简单 CASE 表达式能写的条件,搜索 CASE 表达式也能写,所以本书基本上采用搜索 CASE 表达式的写法。
注意:在发现为真的 WHEN 子句时,CASE 表达式的真假值判断就会中止,而剩余的 WHEN 子句会被忽略,为了避免引起不必要的混乱,使用 WHEN 子句时要注意条件的排他性。
-- 例如,这样写的话,结果里不会出现“第二”
CASE WHEN col_1 IN ('a', 'b') THEN '第一'
WHEN col_1 IN ('a') THEN '第二'
ELSE '其他' END
注意事项1:统一各分支返回的数据类型
- 虽然这一点无需多言,但这里还是要强调一下:一定要注意
CASE表达式里各个分支返回的数据类型是否一致。某个分支返回字符型,而其他分支返回数值型的写法是不正确的。
注意事项2:不要忘了写 END
- 使用
CASE表达式的时候,最容易出现的语法错误是忘记写END。
注意事项3:养成写 ELSE 子句的习惯
- 与
END不同,ELSE子句是可选的,不写也不会出错。不写ELSE子句时,CASE表达式的执行结果是NULL。但是不写可能会造成“语法没有错误,结果却不对”这种不易追查原因的麻烦
重点 CASE 表达式 行转列:https://www.cnblogs.com/liqingwen/p/6572284.html


浙公网安备 33010602011771号