(一)概述:
-
case when:条件判断语句
(1) 相当于其它语言中的 if else
(2) 部分情况下,等同于 decode() -
case when 表达式用两种形式
– 简单 case 函数,要求:when 对象的类型 和 case 对象的类型一致
– 此时等同于 decode(sex, ‘1’, ‘男’, ‘2’, ‘女’)
case sex
when ‘1’ then ‘男’
when ‘2’ then ‘女’
else ‘其它’
end;– case 表达式
case
when sex = ‘1’ then ‘男’
when sex = ‘2’ then ‘女’
else ‘其它’
end; -
注意:when 的执行顺序,当 ‘第一个’ when 满足条件时,便结束查询
(不会继续判断其它的 when 条件) -
建议:当 case when 和 decode 等价,且判断语句不超过 10 行时,
使用 decode(语法简洁)
(二)示例
1.简单的case表达式
SELECT
CASE 列名
WHEN 值1 THEN 結果1
WHEN 值2 THEN 結果2
ELSE 结果3
END
FROM table1;
2.作为WHERE后的多条件判断
SELECT
*
FROM
"PeopleInfo"
WHERE
( CASE WHEN AGE = 18 AND SEX = 0 THEN 1 WHEN AGE = 19 AND SEX = 1 THEN 2 ELSE 0 END) = 1
(三)报错
ORA-06592: 执行 CASE 语句时未找到 CASE
在 Oracle 中,若省略 else 子句,当存在不符合的条件时,默认为 null
在 PL/SQL 中,若省略 else 子句,当存在不符合的条件时,直接 报错!
CASEWHEN是Oracle数据库中用于条件判断的语句,类似于其他语言的IFELSE。它有两种形式:简单CASE函数和CASE表达式。当判断条件不多且可与DECODE函数互换时,DECODE通常因语法简洁而被推荐。在使用CASEWHEN时,一旦满足某个WHEN条件,查询即停止,未匹配的条件默认为NULL(Oracle中)或引发错误(PL/SQL中)。文章提供了CASEWHEN在查询和WHERE子句中的应用示例,并警告了省略ELSE子句可能引发的错误。
1万+

被折叠的 条评论
为什么被折叠?



