条件表达式(Case-when_Decode)

在 Oracle 中,**CASE WHEN****DECODE** 都是用于实现条件判断和分支逻辑的表达式。下面是详细的语法说明、用法对比和示例解析。


🔶 一、CASE WHEN 表达式(标准 SQL 语法)

✅ 语法一:简单 CASE 表达式

CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    ELSE default_result
END

✅ 语法二:搜索 CASE 表达式(更灵活)

CASE 
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

🎯 示例:

SELECT employee_id,
       salary,
       CASE 
           WHEN salary >= 10000 THEN '高收入'
           WHEN salary >= 5000 THEN '中收入'
           ELSE '低收入'
       END AS 收入等级
FROM employees;

🔍 说明:

  • 使用 CASE 实现多条件判断;
  • 可以处理范围比较、复杂逻辑;
  • 最后一个 ELSE 是可选的,如果不写,默认返回 NULL

🔷 二、DECODE 函数(Oracle 专有写法)

✅ 语法:

DECODE(expr, search1, result1, search2, result2, ..., default_result)

🎯 示例:

SELECT job_id,
       DECODE(job_id,
              'IT_PROG', '程序员',
              'HR_REP', '人力资源',
              '销售') AS 职位名称
FROM employees;

🔍 说明:

  • 如果 job_id = 'IT_PROG',返回 '程序员'
  • 如果 job_id = 'HR_REP',返回 '人力资源'
  • 否则返回 '销售'(默认值)。

🔄 CASEDECODE 的对比总结:

特性CASE WHENDECODE
是否标准SQL✅ 是标准 SQL❌ Oracle 专有
比较操作类型可进行任何条件判断(范围、表达式)只能做等值比较
可读性更清晰,支持嵌套 CASE适合简单的值匹配
是否支持嵌套✅ 支持✅ 支持,但可读性差
使用建议多条件判断时推荐使用简单值匹配时更简洁

✅ 示例对照:

1. 使用 CASE WHEN 判断工资等级:

SELECT employee_id,
       salary,
       CASE 
           WHEN salary >= 15000 THEN 'A类'
           WHEN salary >= 10000 THEN 'B类'
           ELSE 'C类'
       END AS 工资等级
FROM employees;

2. 使用 DECODE 实现类似功能:

SELECT employee_id,
       DECODE(salary,
              15000, 'A类',
              10000, 'B类',
              'C类') AS 工资等级
FROM employees;

📝 限制DECODE 不能做 >=< 等范围判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值