用sql 怎么写iif
时间: 2023-08-04 08:19:12 浏览: 51
在 SQL 中,可以使用 CASE 表达式实现类似于 iif 函数的功能。CASE 表达式有两种形式:简单 CASE 和搜索 CASE。
简单 CASE 表达式的语法如下:
```
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
WHEN valueN THEN resultN
ELSE default_result
END
```
其中,expression 是要测试的表达式,value1、value2、…、valueN 是可能的值,result1、result2、…、resultN 是与每个值相关联的结果,default_result 是一个可选的默认结果。如果 expression 等于 value1,那么结果就是 result1;如果 expression 等于 value2,那么结果就是 result2,以此类推。如果 expression 不等于任何一个 value,那么结果就是 default_result(如果指定了)或者 NULL(如果没有指定)。
例如,下面的 SQL 语句使用简单 CASE 表达式将销售额分为三个档次:
```
SELECT order_id, amount,
CASE
WHEN amount < 1000 THEN 'Low'
WHEN amount >= 1000 AND amount < 5000 THEN 'Medium'
ELSE 'High'
END AS level
FROM orders;
```
搜索 CASE 表达式的语法如下:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
WHEN conditionN THEN resultN
ELSE default_result
END
```
其中,condition1、condition2、…、conditionN 是一系列条件,result1、result2、…、resultN 是与每个条件相关联的结果,default_result 是一个可选的默认结果。如果第一个条件为真,那么结果就是 result1;如果第二个条件为真,那么结果就是 result2,以此类推。如果所有条件都为假,那么结果就是 default_result(如果指定了)或者 NULL(如果没有指定)。
例如,下面的 SQL 语句使用搜索 CASE 表达式将学生的成绩转换为等级:
```
SELECT student_id, score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'F'
END AS grade
FROM scores;
```
以上两种方式都可以实现类似于 iif 函数的功能。