在SQL中,CASE语句是一种条件语句,它允许我们基于条件表达式的结果来执行不同的操作。CASE语句可以在SELECT、UPDATE和DELETE语句中使用,它提供了更灵活的数据处理和输出控制的方式。
CASE语句的语法
CASE语句有两种形式:简单CASE表达式和搜索CASE表达式。
简单CASE表达式
简单CASE表达式使用固定值进行匹配:
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
[ELSE result]
END
其中,expression为要进行匹配的表达式,value为预设的值,result为匹配成功后返回的结果。ELSE子句是可选的,用于处理没有匹配成功的情况。
搜索CASE表达式
搜索CASE表达式使用布尔表达式进行匹配:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
[ELSE result]
END
其中,condition为布尔表达式,result为匹配成功后返回的结果。ELSE子句同样是可选的。
CASE语句的应用实例
下面举几个例子来说明CASE语句的应用:
示例1
SELECT product_id, product_name,
CASE
WHEN quantity > 100 THEN 'High'
WHEN quantity > 50 THEN 'Medium'
ELSE 'Low'
END AS quantity_status
FROM products;
这个例子中,根据产品的数量(quantity)来判断其数量状态(quantity_status),如果数量大于100,则状态为"High",如果数量大于50,则状态为"Medium",否则状态为"Low"。
示例2
UPDATE orders
SET order_status =
CASE
WHEN order_date > '2021-01-01' THEN 'New'
WHEN order_date <= '2020-12-31' THEN 'Old'
ELSE 'Unknown'
END;
这个例子中,根据订单的日期(order_date)来更新订单的状态(order_status),如果订单日期在2021年1月1日之后,则订单状态为"New",如果订单日期在2020年12月31日及之前,则订单状态为"Old",否则状态为"Unknown"。
CASE语句的嵌套应用
CASE语句可以进行嵌套使用,即CASE语句中嵌套另一个CASE语句。例如:
SELECT product_id, product_name,
CASE
WHEN price > 100 THEN
CASE
WHEN quantity > 10 THEN 'Expensive & High'
ELSE 'Expensive & Low'
END
ELSE 'Cheap'
END AS price_status
FROM products;
这个例子中,首先根据产品的价格(price)判断其价格状态(price_status),如果价格大于100,则进一步根据数量(quantity)来判断其数量状态。如果数量大于10,则价格状态为"Expensive & High",否则价格状态为"Expensive & Low"。如果价格小于等于100,则价格状态为"Cheap"。
总结
CASE语句是SQL中一种非常有用的条件语句,它允许我们基于不同的条件表达式执行不同的操作。无论是在选择数据、更新数据还是删除数据时,CASE语句都可以提供更灵活的数据处理方式。在实际应用中,我们可以根据具体的业务需求来灵活运用CASE语句,从而实现更复杂的数据处理和输出控制。
本文来自极简博客,作者:深海鱼人,转载请注明原文链接:SQL语句中的CASE语句详解