case when and多条件判断
时间: 2024-07-12 21:01:33 浏览: 113
在SQL中,`CASE WHEN` 是一种用于执行多条件判断的语句结构,它根据给定的条件返回不同结果。`CASE` 表达式的基本语法如下:
```sql
CASE
WHEN condition_1 THEN result_1
[WHEN condition_2 THEN result_2]
...
ELSE default_result
END as column_name
```
这里的 `condition_n` 是你要测试的布尔表达式或比较操作,如果满足该条件,则返回相应的 `result_n`;如果不满足任何条件,则会执行 `ELSE` 子句中的默认值(如果有的话),通常用于处理未匹配情况。
例如,如果你想根据学生的分数决定他们的等级:
```sql
SELECT
id,
CASE
WHEN score > 90 THEN 'A'
WHEN score BETWEEN 80 AND 90 THEN 'B'
WHEN score BETWEEN 70 AND 79 THEN 'C'
WHEN score BETWEEN 60 AND 69 THEN 'D'
ELSE 'F'
END AS grade
FROM students;
```
在这个例子中,`CASE` 根据不同的分数范围为学生分配等级。
相关问题
sql case when 判断多个条件
### 如何在 SQL 中使用 CASE WHEN 处理多条件判断
#### 使用 `CASE` 表达式的两种形式
SQL 提供了两种不同类型的 `CASE` 表达式用于处理多条件判断:
1. **简单 `CASE` 函数**
这种方式适用于简单的相等情况比较。语法结构如下所示[^3]:
```sql
CASE column_name
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE default_result
END
```
例如,对于性别字段的转换可以这样写:
```sql
SELECT username, pickname,
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他'
END AS sexName
FROM users;
```
2. **复杂 `CASE` 或者称为搜索 `CASE`**
当需要更复杂的条件表达时,比如组合多个列或应用不同的运算符来进行判断,则应采用这种形式。其基本格式为:
```sql
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
```
实际例子中可能会像下面这样使用:
```sql
SELECT (CASE
WHEN age >= 18 AND city = 'Beijing' THEN 'Adult in Beijing'
WHEN age < 18 AND city != 'Shanghai' THEN 'Minor not in Shanghai'
ELSE 'Other cases'
END) AS description
FROM people_table;
```
#### 应用场景扩展
除了上述基础用法外,`CASE` 表达式还可以应用于各种上下文中,包括但不限于聚合函数内、更新操作以及删除记录前的数据筛选等场合[^2]。
例如,在统计特定条件下的人数时可结合 `COUNT()` 聚合函数一起使用:
```sql
SELECT COUNT(CASE
WHEN status = 'active' THEN id
END) AS active_users_count
FROM user_status;
```
又或者是执行有条件的数据修改任务时:
```sql
UPDATE employees
SET salary_increase = (
CASE
WHEN performance_rating > 90 THEN salary * 0.15
WHEN performance_rating BETWEEN 70 AND 90 THEN salary * 0.1
ELSE salary * 0.05
END);
```
case when 怎么多条件判断来的
CASE WHEN语句是SQL语言中一种条件表达式,可以用于根据不同的条件返回不同的结果。它通常具有以下语法形式:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN condition3 THEN result3
...
ELSE default_result
END
```
其中,`condition1`、`condition2`、`condition3`等表示要判断的条件,`result1`、`result2`、`result3`等表示当条件成立时要返回的结果,`default_result`表示当所有条件都不成立时的默认返回结果。
CASE WHEN语句可以支持多个条件判断,即可以根据多个条件来返回不同的结果。例如:
```
SELECT
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 AND score < 90 THEN 'B'
WHEN score >= 70 AND score < 80 THEN 'C'
ELSE 'D'
END AS grade
FROM
student_scores;
```
上述SQL语句会根据学生的分数,将其转化为对应的等级(A、B、C、D)。其中,根据学生分数的不同,采用了多个条件判断来返回不同的结果。
阅读全文
相关推荐
















