oracle case

select a.id,a.colA ,
case when a.colA='11' then '这是11'
when a.colA='22' then '这是22'
else '例外'
end anyNameYouLike

from TA a


update students
set grade = (
select grade from
(
select id,
case when current_credits > 90 then 'a'
when current_credits > 80 then 'b'
when current_credits > 70 then 'c'
else 'd' end grade
from students
) a
where a.id = students.id
)
### Oracle 数据库中的 CASE 语句 在 Oracle 数据库中,`CASE` 表达式用于执行条件逻辑操作。它类似于编程语言中的 `if-then-else` 结构,允许基于特定条件返回不同值。以下是关于 `CASE` 的详细介绍及其用法。 #### 简单 CASE 表达式 简单 `CASE` 表达式的语法如下: ```sql CASE input_expression WHEN when_expression THEN result_expression_1 WHEN when_expression THEN result_expression_2 ... ELSE else_result_expression END ``` 此表达式会比较 `input_expression` 和每个 `when_expression`,如果匹配,则返回对应的 `result_expression` 值[^4]。 #### 搜索 CASE 表达式 搜索 `CASE` 表达式的灵活性更高,其语法结构为: ```sql CASE WHEN condition_1 THEN result_expression_1 WHEN condition_2 THEN result_expression_2 ... ELSE else_result_expression END ``` 在此形式下,可以指定任意布尔条件来决定返回哪个结果[^4]。 #### 使用示例 下面是一些实际应用的例子展示如何利用 `CASE` 来处理数据查询需求。 ##### 示例 1: 将数值转换成等级描述 假设有一个学生分数表 (`student_scores`),其中包含字段 `score`,我们希望将其映射到相应的成绩等级。 ```sql SELECT student_id, score, CASE WHEN score >= 90 THEN 'A' WHEN score BETWEEN 80 AND 89 THEN 'B' WHEN score BETWEEN 70 AND 79 THEN 'C' WHEN score < 70 THEN 'D' ELSE 'Unknown' END AS grade_level FROM student_scores; ``` 上述 SQL 查询通过 `CASE` 实现了对学生得分的分类,并赋予相应字母表示的成绩等级[^5]。 ##### 示例 2: 计算折扣后的价格 考虑一张商品信息表 (`products`) 中有原价(`original_price`) 列以及库存状态(`stock_status`) 列。我们可以依据存货情况调整最终售价。 ```sql SELECT product_name, original_price, stock_status, CASE WHEN stock_status = 'Low' THEN ROUND(original_price * 0.9, 2) WHEN stock_status = 'Medium' THEN ROUND(original_price * 0.95, 2) ELSE original_price END AS discounted_price FROM products; ``` 这里展示了根据不同库存水平计算打折后金额的方法[^6]。 #### 注意事项 虽然 `CASE` 提供强大的控制能力,但在某些情况下可能不如其他函数简洁高效。例如,在简单的真/假判断上可以直接采用解码器(Decode) 函数替代复杂写法;然而对于多分支或多层嵌套情形而言,`CASE` 显得更加直观易读[^7]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值