oracle的case when用法

(一)概述:
  1. case when:条件判断语句
    (1) 相当于其它语言中的 if else
    (2) 部分情况下,等同于 decode()

  2. 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;

  3. 注意:when 的执行顺序,当 ‘第一个’ when 满足条件时,便结束查询
    (不会继续判断其它的 when 条件)

  4. 建议:当 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 子句,当存在不符合的条件时,直接 报错!

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