CASE WHEN 在 MySQL 中是一种条件表达式,用于根据不同的条件返回不同的值或执行不同的操作。
一、基本语法
CASE expression
WHEN condition1 THEN result1
WHEN condition2 THEN result2
…
ELSE default_result
END
二、示例用法
示例 1:根据数值范围返回不同结果
假设有一个 salary 列,您想要根据工资的不同范围返回不同的级别:
SELECT name, salary,
CASE
WHEN salary < 5000 THEN ‘Low’ WHEN salary >= 5000 AND salary < 10000 THEN ‘Medium’ WHEN salary >= 10000 THEN ‘High’
END AS salary_level
FROM employees;
示例 2:根据条件判断返回不同字符串
假设有一个 status 列,值为 ‘active’ 或 ‘inactive’,您想要将其转换为更易读的文本:
SELECT id, status,
CASE status
WHEN ‘active’ THEN ‘账户已激活’
WHEN ‘inactive’ THEN ‘账户未激活’
END AS status_description
FROM user_accounts;
示例 3:在 UPDATE 语句中使用
假设您想要根据条件更新 discount 列的值:
UPDATE orders
SET discount = CASE
WHEN total_amount > 1000 THEN 0.1
WHEN total_amount > 500 AND total_amount <= 1000 THEN 0.05
ELSE 0
END;
在 MySQL 中如何使用 ELSEIF 子句
在 MySQL 中,没有 ELSEIF 关键字 ,但是您可以通过嵌套 CASE WHEN 表达式来实现类似 ELSEIF 的逻辑。
以下是一个示例,假设您有一个 sales 表,其中有 amount 列,您希望根据销售金额的不同范围进行分类:
SELECT amount,
CASE
WHEN amount < 100 THEN ‘Low’ WHEN amount >= 100 AND amount < 500 THEN ‘Medium’ WHEN amount >= 500 THEN ‘High’
END AS category
FROM sales;
如果您想要实现类似 ELSEIF 的多层判断,像这样嵌套使用:
SELECT amount,
CASE
WHEN amount < 100 THEN ‘Low’ WHEN amount >= 100 AND amount < 500 THEN CASE WHEN amount >= 300 THEN ‘Medium-High’
ELSE ‘Medium-Low’
END
WHEN amount >= 500 THEN ‘High’
END AS category
FROM sales;
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/418846.html