数据库写法case,when
时间: 2023-10-13 20:17:15 浏览: 85
CASE WHEN语句是一种在SQL中使用的条件语句。它允许您根据特定条件执行不同的操作。
语法:
```
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN condition3 THEN result3
...
ELSE default_result
END
```
示例:
假设我们有一个学生成绩表,包含三个字段:学生姓名,科目和分数。我们想要使用CASE WHEN语句来将学生的分数划分为不同的等级:
```
SELECT
name,
subject,
score,
CASE
WHEN score >= 90 THEN '优秀'
WHEN score >= 80 THEN '良好'
WHEN score >= 70 THEN '中等'
WHEN score >= 60 THEN '及格'
ELSE '不及格'
END AS grade
FROM
scores;
```
这将返回一个包含学生姓名,科目,分数和等级的结果集。
在上面的示例中,我们使用了多个WHEN条件。如果所有条件都不满足,则使用ELSE子句中指定的默认结果。在上面的示例中,如果分数低于60分,则学生的等级将被标记为“不及格”。
相关问题
oracle支持以下写法吗? UPDATE yoiurtable SET dingdan = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END WHERE id IN (1,2,3)
是的,Oracle数据库支持类似于上面的`CASE`语句的写法来更新表中的数据,可以将多个更新操作合并为一个更新语句。您可以将上面的SQL语句稍作修改,以符合Oracle数据库的语法规则,示例如下:
```
UPDATE yourtable
SET dingdan = CASE id
WHEN 1 THEN 3
WHEN 2 THEN 4
WHEN 3 THEN 5
END
WHERE id IN (1, 2, 3);
```
这个语句将对`yourtable`表中`id`为1、2、3的记录的`dingdan`列进行更新,分别将其赋值为3、4、5。
select * from a left join b ON case when b.column like '%-%' THEN a.column1 = b.column ELSE a.column2 = b.column END
您的 SQL 查询语句是一个左连接(LEFT JOIN)操作,将表a和表b进行关联。关联条件使用了CASE语句,根据b.column列的值是否包含"-"来确定使用哪个列进行匹配。
如果b.column列的值包含"-",则使用a.column1列与b.column列进行匹配;否则,使用a.column2列与b.column列进行匹配。
该查询语句会返回表a和表b中根据关联条件匹配的所有行,包括a表中没有匹配到的行。
请注意,根据具体数据库的不同,语法可能会略有差异。上述查询语句是一种通用的写法,但在特定数据库中可能需要适当调整。
阅读全文