oracal的case用法
时间: 2023-07-23 14:05:17 浏览: 76
Oracle中的CASE语句可以用于在SQL查询中进行条件逻辑判断和计算。它的基本语法如下:
```
SELECT
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END
FROM table_name;
```
其中,`condition1`和`condition2`是逻辑条件,`result1`和`result2`是与条件对应的结果值,`default_result`是当所有条件都不满足时的默认返回值。
下面是一个例子,根据订单表中的订单金额计算折扣,并返回折扣后的实际支付金额:
```
SELECT
order_id,
order_amount,
CASE
WHEN order_amount >= 1000 THEN order_amount * 0.9
WHEN order_amount >= 500 THEN order_amount * 0.95
ELSE order_amount
END AS actual_amount
FROM orders;
```
在这个例子中,如果订单金额大于或等于1000元,则折扣为10%;如果订单金额在500元到999元之间,则折扣为5%;否则,没有折扣。最终,查询结果会返回每个订单的订单号、订单金额和实际支付金额。
相关问题
Oracle case用法
Oracle中的CASE语句提供了一种灵活的方式来进行条件逻辑判断。它类似于其他编程语言中的switch语句和if语句。
下面是一个简单的示例,它使用CASE语句来根据不同的条件返回不同的结果:
```
SELECT
CASE
WHEN grade >= 90 THEN 'A'
WHEN grade >= 80 THEN 'B'
WHEN grade >= 70 THEN 'C'
WHEN grade >= 60 THEN 'D'
ELSE 'F'
END as letter_grade
FROM grades;
```
在上面的示例中,我们使用CASE语句来根据成绩返回字母等级。如果成绩大于或等于90,我们返回“ A”,如果成绩大于或等于80,则返回“ B”,以此类推。最后,如果成绩低于60,则返回“ F”。
CASE语句还可以与其他函数和表达式一起使用,以便进行更复杂的条件判断。例如:
```
SELECT
CASE
WHEN name LIKE 'A%' THEN UPPER(name)
WHEN name LIKE 'B%' THEN LOWER(name)
ELSE name
END as modified_name
FROM employees;
```
在上面的示例中,我们使用CASE语句根据员工姓名的首字母来修改姓名。如果姓名以“A”开头,则将其转换为大写,如果以“B”开头,则将其转换为小写,否则保留原样。
oracle case when 用法
Oracle中的CASE WHEN语句是一种流程控制语句,它允许根据条件执行不同的操作。它的基本语法如下:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END;
```
其中,`condition1`、`condition2`等是条件表达式,`result1`、`result2`等是与条件表达式对应的结果。如果没有任何条件表达式被满足,则返回`ELSE`子句中的结果。如果没有`ELSE`子句,则返回`NULL`。
除了上述基本语法,Oracle的CASE WHEN语句还有其他一些用法,例如:
1. 使用搜索表达式:
```
CASE search_expression
WHEN expression1 THEN result1
WHEN expression2 THEN result2
...
ELSE resultN
END;
```
其中,`search_expression`是要比较的表达式,`expression1`、`expression2`等是与`search_expression`进行比较的表达式,`result1`、`result2`等是与条件表达式对应的结果。
2. 嵌套CASE WHEN语句:
```
CASE
WHEN condition1 THEN
CASE
WHEN subcondition1 THEN subresult1
WHEN subcondition2 THEN subresult2
...
ELSE subresultN
END
WHEN condition2 THEN result2
...
ELSE resultN
END;
```
其中,`subcondition1`、`subcondition2`等是嵌套的条件表达式,`subresult1`、`subresult2`等是与嵌套条件表达式对应的结果。
阅读全文