Oracle case的实际用法总结

本文详细介绍了Oraclecase表达式在SQL中的应用,包括两种表达式形式及其使用方法,通过具体示例展示了如何利用case表达式实现if-then-else型逻辑,与DECODE()类比,并强调了其ANSI兼容性。

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

  以下的文章主要是介绍Oracle case的实际用法,我们大家都知道case表达式是可以在SQL中来实现if-then-else型的相关实际应用逻辑,而不一定非得使用PL/SQL。Oraclecase的工作方式与DECODE()类似,但应该使用case,因为它与ANSI兼容。

  case有两种表达式:

  1. 简单Oraclecase表达式,使用表达式确定返回值.

  语法:

  1.case search_expression

  2.WHEN expression1 THEN result1

  3.WHEN expression2 THEN result2

  4....

  5.WHEN expressionN THEN resultN

  6.ELSE default_result

  7.END

  例:

  1.select product_id,product_type_id,

  2.case product_type_id

  3.when 1 then 'Book'

  4.when 2 then 'Video'

  5.when 3 then 'DVD'

  6.when 4 then 'CD'

  7.else 'Magazine'

  8.end

  9.from products

  结果:

  PRODUCT_ID PRODUCT_TYPE_ID OraclecasePROD

  ---------- --------------- --------

  1 1 Book

  2 1 Book

  3 2 Video

  4 2 Video

  5 2 Video

  6 2 Video

  7 3 DVD

  8 3 DVD

  9 4 CD

  10 4 CD

  11 4 CD

  12 Magazine

  12 rows selected.

  2. 搜索case表达式,使用条件确定返回值.

  语法:

  1.case

  2.WHEN condition1 THEN result1

  3.WHEN condistion2 THEN result2

  4....

  5.WHEN condistionN THEN resultN

  6.ELSE default_result

  7.END

  例:

  1.select product_id,product_type_id,

  2.Oraclecase

  3.when product_type_id=1 then 'Book'

  4.when product_type_id=2 then 'Video'

  5.when product_type_id=3 then 'DVD'

  6.when product_type_id=4 then 'CD'

  7.else 'Magazine'

  8.end

  9.from products

  结果与上相同.

原文出处: http://database.ctocio.com.cn/440/12256940.shtml
### 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、付费专栏及课程。

余额充值