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

 

 

posted @ 2020-03-06 10:57  An-Optimistic-Person  阅读(152)  评论(0)    收藏  举报