oracle的case when用法

CASEWHEN是Oracle数据库中用于条件判断的语句,类似于其他语言的IFELSE。它有两种形式:简单CASE函数和CASE表达式。当判断条件不多且可与DECODE函数互换时,DECODE通常因语法简洁而被推荐。在使用CASEWHEN时,一旦满足某个WHEN条件,查询即停止,未匹配的条件默认为NULL(Oracle中)或引发错误(PL/SQL中)。文章提供了CASEWHEN在查询和WHERE子句中的应用示例,并警告了省略ELSE子句可能引发的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)概述:
  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 子句,当存在不符合的条件时,直接 报错!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值