sql中case when的用法

介绍

在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语句是一种非常强大的工具,可以根据预定义的条件来执行不同的操作。它在处理复杂的查询、分组和筛选数据时非常有用。

数据库标签