介绍
在SQL中,case when语句是一种非常常用的条件语句,它根据指定的条件执行不同的操作。case when语句类似于其他编程语言中的if-else语句,但它的语法和语义略有不同。
语法
case when语句通常包含多个条件和操作。下面是case when语句的基本语法:
CASE WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE resultN
END
在上面的语法中,condition1, condition2, ...是要测试的条件,result1, result2, ...是条件测试为真时要执行的操作。如果条件都不为真,则执行ELSE resultN操作。
条件
在case when语句中,条件可以是以下任何表达式:
常量
变量
操作符
函数
例如,以下是使用常量作为条件的示例:
SELECT name,
CASE age
WHEN 20 THEN 'Young'
WHEN 30 THEN 'Middle Aged'
ELSE 'Elder'
END
FROM people;
在上面的示例中,如果age为20,将返回“Young”,如果age为30,则返回“Middle Aged”,否则返回“Elder”。
操作
在case when语句中,操作可以是以下任何表达式:
常量
变量
函数
以下是使用函数作为操作的示例:
SELECT name,
CASE
WHEN age >= 20 AND age <= 29 THEN 'Young'
WHEN age >= 30 AND age <= 49 THEN 'Middle Aged'
ELSE 'Elder'
END
FROM people;
在上面的示例中,如果age在20到29之间,将返回“Young”,如果在30到49之间,则返回“Middle Aged”,否则返回“Elder”。
示例
让我们看一个更复杂的例子来演示case when语句的使用:
SELECT order_id,
CASE
WHEN status = 'Pending' THEN 'Not Processed'
WHEN status = 'Processing' THEN 'In Process'
WHEN status = 'Shipped' THEN 'Shipped'
WHEN status = 'Delivered' THEN 'Delivered'
ELSE 'Unknown'
END AS status
FROM orders;
在上面的示例中,针对每个order_id,case when语句将检查订单状态,并返回相应的信息。例如,如果订单状态为“Pending”,则返回“Not Processed”,如果订单状态为“Processing”,则返回“In Process”,如果订单状态为“Shipped”,则返回“Shipped”。
总结
在SQL查询中,case when语句是一种非常强大的工具,可以根据预定义的条件来执行不同的操作。它在处理复杂的查询、分组和筛选数据时非常有用。