SQL进阶教程 1-1 CASE 表达式

1、CASE 表达式概述

CASE 表达式有简单 CASE 表达式 (simple case expression)和搜索 CASE 表达式(searched case expression) 两种写法。

-- 简单 CASE 表达式
select
case sex
 when '1' then '男'
 when '2' then '女'
else '其他' end
from 表1

-- 搜索 CASE 表达式
select
case when sex = '1' then '男'
     when sex = '2' then '女'
else '其他' end
from 表1

  • 以上两者的执行结果一样,但是简单表达式能执行的操作有限,简单表达式能执行的搜索表达式也能执行,推荐都使用搜索表达式。
  • 在发现真的when表达式时,case表达式的真假判断就会停止,剩余的when字句会被忽略,注意排他性。

2、case表达式的注意事项

  • 注意事项 1:case表达式各个分支返回的数据类型必须一致

        虽然这一点无需多言,但这里还是要强调一下:一定要注意 CASE 表达式里各个分支返回的数据类型是否一致。某个分支返回字符型,而其他分支返回数值型的写法是不正确的。

  • 注意事项 2:不要忘了写 END

        使用 CASE 表达式的时候,最容易出现的语法错误是忘记写 END 。虽然忘记写时程序会返回比较容易理解的错误消息,不算多么致命的错误。但是,感觉自己写得没问题,而执行时却出错的情况大多是由这个原因引起的,所以请一定注意一下。

  • 注意事项 3:养成写 ELSE 子句的习惯

        与 END 不同,ELSE 子句是可选的,不写也不会出错。不写 ELSE 子句时,CASE 表达式的执行结果是 NULL 。但是不写可能会造成"语法没有错误,结果却不对"这种不易追查原因的麻烦,所以最好明确地写上 ELSE 子句(即便是在结果可以为 NULL 的情况下)。养成这样的习惯后,我们从代码上就可以清楚地看到这种条件下会生成 NULL,而且将来代码有修改时也能减少失误。

你可能感兴趣的:(sql,数据库)