sql when case 用法
时间: 2023-08-19 10:17:04 浏览: 135
### 回答1:
SQL 的 `CASE` 语句用于根据不同的条件来执行不同的操作。它可以被用在 `SELECT`、`UPDATE`、`DELETE` 和 `SET` 语句中。
`CASE` 语句的基本语法如下:
```
CASE
WHEN condition THEN result
WHEN condition THEN result
ELSE result
END
```
例如,假设你有一张表,表中有一列 `grade` 表示学生的成绩,你想要通过 `CASE` 语句来将学生的成绩分类为优秀、良好和及格三类,你可以这样写:
```
SELECT grade,
CASE
WHEN grade >= 90 THEN '优秀'
WHEN grade >= 80 THEN '良好'
ELSE '及格'
END AS performance
FROM students;
```
这个语句会将 `grade` 列中大于等于 90 的值映射为 '优秀',大于等于 80 且小于 90 的值映射为 '良好',剩余的值都映射为 '及格'。
注意,在 `CASE` 语句中,只有第一个满足条件的 `WHEN` 子句的结果会被返回,所以一定要注意条件的顺序。
### 回答2:
SQL中的CASE语句是一种条件表达式,可以根据某个给定的条件产生不同的结果。它的格式通常是“CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE result END”。
在这个语法中,首先我们使用WHEN关键字后面跟上一个条件表达式condition1,然后使用THEN关键字跟上预期的结果result1。如果这个条件表达式为真,则返回该结果。如果不为真,则继续判断下一个条件。
我们可以使用多个WHEN关键字,每个WHEN关键字后面跟上一个条件表达式和对应的结果。最后,如果所有条件都不为真,则使用ELSE关键字跟上默认的结果。
CASE语句可以在SELECT语句中使用,用于在查询结果中生成一个新的列,该列根据条件表达式的结果进行赋值。这对于根据不同的情况选择不同的列非常有用。CASE语句也可以在WHERE子句和ORDER BY子句中使用。
例如,如果我们有一个存储了学生成绩的表,我们可以使用CASE语句根据分数范围来给学生评级。以下是一个具体的例子:
SELECT student_name, score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 THEN '良好'
WHEN score >= 70 THEN '中等'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS grade
FROM student_scores;
这个查询会返回每个学生的姓名、分数和对应的等级。CASE语句根据分数选取相应的评级,并将其命名为grade列。
综上所述,SQL中的CASE语句是一种灵活的条件表达式,可以根据不同的条件产生不同的结果。它在查询中经常被使用,用于根据条件生成新的列或者对查询结果进行条件筛选和排序。
### 回答3:
SQL中的CASE表达式是一种条件表达式,它用于在查询语句中根据条件的满足程度返回不同的值。它可以用在SELECT、UPDATE和DELETE语句中的任何位置。
CASE表达式的语法如下:
```
CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
...
ELSE result_n
END
```
其中,condition_1、condition_2等是条件表达式,result_1、result_2等是满足对应条件时返回的值。ELSE子句是可选的,当没有条件满足时返回ELSE后面的值。
CASE表达式的使用非常灵活。它可以用于简单的条件判断,也可以嵌套使用或与其他函数一起使用。
例如,我们可以使用CASE表达式根据学生成绩的等级返回不同的评价:
```
SELECT
student_name,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 THEN '良好'
WHEN score >= 70 THEN '及格'
ELSE '不及格'
END AS grade
FROM
students;
```
以上查询会返回学生姓名和对应的成绩评价,根据分数判断是否优秀、良好、及格或不及格。
另外,CASE表达式还可以嵌套使用。比如,在查询学生成绩时,我们不仅关心成绩本身,还关心成绩是否良好(大于等于80分)。可以使用嵌套的CASE表达式:
```
SELECT
student_name,
score,
CASE
WHEN score >= 80 THEN '良好'
ELSE
CASE
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END
END AS grade
FROM
students;
```
以上查询中,如果成绩大于等于80分,则评价为良好;否则,再判断是否大于等于60分,如果是则评价为及格,否则评价为不及格。
总之,SQL中的CASE表达式可以根据指定的条件返回不同的结果,非常灵活,可以根据具体场景的需求来灵活应用。
阅读全文