MySQL中 CASE 表达式的介绍及使用
MySQL CASE表达式
简介: 使用MySQL CASE 表达式向查询中添加if-else逻辑。
MySQL CASE 表达式介绍
MySQL case 表达式是一种控制流结构,允许你向查询条件中添加if-else逻辑。一般来说,你可以使用 case 表达式在任何地方,可以让一个有效的表达式例如 select ,where 和 order by 成立。
case 表达式 有两种形式: simple case 和 seaerched case
简单 CASE 表达式(simple case expression)
简单CASE表达式语法
CASE value
WHEN value1 THEN result1
WHEN value2 THEN result2
...
[ELSE else_result]
END
说明
在此语法中,CASE匹配具有价值value1,value2 等等,相等返回result1,result2…,如果value不等任何值则返回结果else后的指定的WHERE子句。
在CASE中value与WHEN子句values 值进行了比较确定是否相等性,不能将其与NULL一起使用,因为NULL=NULL 返回false。
示例
SELECT
customerName,
orderCount,
CASE orderCount
WHEN 1 THEN 'One-time Customer'
WHEN 2 THEN 'Repeated Customer'
WHEN 3 THEN 'Frequent Customer'
ELSE 'Loyal Customer'
END customerType
FROM
cte
ORDER BY customerName;
搜索 CASE (Searched CASE expression)
搜索case 表达式语法
CASE
WHEN expression1 TNEN result1
WHEN expression2 THEN result2
...
[ELSE else_result]
END
说明
使用这种语法,case计算WHEN子句中指定的表达式,当结果为true时但会THEN后面的而结果值,否则返回ELSE后面的结果。
示例
SELECT
SUM(CASE
WHEN status = 'Shipped' THEN 1
ELSE 0
END) AS 'Shipped',
SUM(CASE
WHEN status = 'On Hold' THEN 1
ELSE 0
END) AS 'On Hold',
SUM(CASE
WHEN status = 'Disputed' THEN 1
ELSE 0
END) AS 'Disputed',
COUNT(*) AS Total
FROM
orders;