oracle中的case的用法

SQL CASE 语句详解
本文介绍了 SQL 中 CASE 语句的两种语法形式,并通过具体示例展示了如何使用 CASE 语句来根据不同的条件返回相应的结果。CASE 语句是 SQL 中进行条件判断的重要方式之一。

语法1:

CASE search_expression   
WHEN expression1 THEN result1   
WHEN expression2 THEN result2   
...   
WHEN expressionN THEN resultN   
ELSE default_result   
END 


语法2:

CASE   
WHEN condition1 THEN result1   
WHEN condistion2 THEN result2   
...   
WHEN condistionN THEN resultN   
ELSE default_result   
END  


注意:
语法2中的条件可以是一个组合条件中间用or、and 等等连接

例子:

select product_id,product_type_id,   
case product_type_id   
when 1 then 'Book'  
when 2 then 'Video'  
when 3 then 'DVD'  
when 4 then 'CD'  
else 'Magazine'  
end   
from products 


这个例子还可以是这样写

case 
when product_type_id=1 then 'Book'
when product_type_id=2 then 'Video'
when product_type_id=3 then 'DVD'
when product_type_id=4 then 'CD'
else 'Magazine'
end



最后还得注意所有的值显示都必须是单引号,不能是双引号

 

Oracle数据库中的 `CASE WHEN` 语句是一种强大的条件表达式,用于在查询中实现逻辑判断和结果选择。它类似于编程语言中的 `if-then-else` 结构,允许根据不同的条件返回不同的值。 ### 基本语法结构 `CASE` 表达式有两种形式:**简单 `CASE`** 和 **搜索 `CASE`**。 #### 简单 CASE 表达式 该形式适用于将某个表达式与多个可能的值进行比较: ```sql CASE expression WHEN value1 THEN result1 WHEN value2 THEN result2 ... ELSE default_result END ``` 例如,根据员工的部门编号显示对应的部门名称: ```sql SELECT employee_id, CASE department_id WHEN 10 THEN '人力资源部' WHEN 20 THEN '财务部' WHEN 30 THEN '技术部' ELSE '其他部门' END AS department_name FROM employees; ``` #### 搜索 CASE 表达式 该形式更为灵活,适用于复杂的条件判断: ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END ``` 例如,根据员工工资水平分类: ```sql SELECT employee_id, salary, CASE WHEN salary < 3000 THEN '低薪' WHEN salary BETWEEN 3000 AND 7000 THEN '中等薪资' ELSE '高薪' END AS salary_level FROM employees; ``` ### 使用场景与注意事项 - **数据转换**:可以用于将某些字段值映射为更具可读性的信息,如性别代码转为“男”、“女”。 - **业务逻辑嵌入**:可在查询中直接实现部分业务逻辑判断,避免将原始数据导出后处理。 - **聚合分析**:结合 `GROUP BY` 和 `SUM`, `COUNT` 等函数使用,支持多维度数据分析。 - **性能影响**:虽然 `CASE WHEN` 提供了灵活性,但过于复杂的条件判断可能影响查询性能,应谨慎使用。 此外,`CASE WHEN` 可以嵌套使用,实现更复杂的逻辑判断,但嵌套层次过多时建议考虑通过视图、函数等方式拆分逻辑以提高可维护性。 --- ### 示例:结合 NULL 处理的 CASE WHEN 以下示例展示了如何处理 `NULL` 值的情况: ```sql SELECT employee_id, CASE WHEN manager_id IS NULL THEN '无上级主管' ELSE '有上级主管' END AS manager_status FROM employees; ``` --- ### 总结 `CASE WHEN` 是 Oracle SQL 中非常实用的工具,能够提升查询的灵活性和表达能力。合理使用 `CASE WHEN` 不仅能简化应用程序逻辑,还能增强数据库端的数据处理能力。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值