欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

CASE 表达式

程序员文章站 2022-03-12 09:33:48
通过本篇文章我们来学习一下CASE表达式的基本使用方法。 CASE表达式有简单 CASE表达式(simple case expression)和搜索 CASE表达式(searched caseexpression)两种写法,它们分别如下所示。 CASE 表达式的写法 我们在编写 SQL 语句的时候需 ......

通过本篇文章我们来学习一下case表达式的基本使用方法。

case表达式有简单 case表达式(simple case expression)和搜索 case表达式(searched caseexpression)两种写法,它们分别如下所示。

  • case 表达式的写法
 -- 简单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表达式的写法。

我们在编写 sql 语句的时候需要注意,在发现为真的 when子句时,case表达式的真假值判断就会中止,而剩余的 when子句会被忽略。为了避免引起不必要的混乱,使用 when子句时要注意条件的排他性。

  • 剩余的 when 子句被忽略的写法示例
1 -- 例如,这样写的话,结果里不会出现“第二”
2  case 
3  when col_1 in ('a', 'b') then '第一' 
4  when col_1 in ('a') then '第二'
5  else '其他' end

此外,使用 case 表达式的时候,还需要注意以下几点。 注意事项 1:统一各分支返回的数据类型

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

注意事项 2:不要忘了写 end

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

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

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