MySQL 中的 CASE WHEN 和功能类似的方法

一、关于 MySQL 中的 CASE WHEN 和功能类似的方法

1.1 CASE WHEN

CASE WHEN 是 MySQL 中常用的逻辑判断语句,也被称为条件表达式。它可以根据不同的条件对数据进行分类和处理,并返回符合条件的结果。

在使用 CASE WHEN 时,我们需要指定待比较的列或表达式、每个条件下的结果以及默认结果等信息。其基本语法格式如下:

CASE expression WHEN value THEN result [WHEN value THEN result ...] [ELSE result] END

其中,expression 可以是一个具体的列或表达式,value 表示具体要比较的值,result 表示当条件成立时返回的结果。ELSE 关键字可选,表示当所有条件都不符合时返回的结果。下面是一个简单的例子:

假设有一个员工表 employees,包含了每个员工的姓名、年龄和薪水。现在要根据员工的年龄分别统计薪水的平均值。我们可以使用以下 SQL 语句实现:

SELECT CASE WHEN age < 30 THEN 20s WHEN age BETWEEN 30 AND 40 THEN 30s WHEN age BETWEEN 40 AND 50 THEN 40s ELSE 50s+ END AS age_group, AVG(salary) AS avg_salary FROM employees GROUP BY age_group;

执行结果如下:

age_group avg_salary 20s 3500 30s 5500 40s 8000 50s+ 6500

从结果可以看出,我们根据不同的年龄范围统计出了各自的平均薪资,并用 CASE WHEN 将其分类返回。

1.2 IFNULL 函数

IFNULL 函数也是 MySQL 中常用的条件表达式函数之一。它会返回两个参数中第一个非空的值。通常用于判断某个字段是否为空,如果为空则返回默认值。其基本语法如下:

IFNULL(expr1, expr2)

其中,expr1 和 expr2 都是要进行比较的值或表达式。如果 expr1 不为空,则返回 expr1 的值;否则返回 expr2 的值。下面是一个简单的例子:

假设有一个订单表 orders,包含了每个订单的订单号、商品名称和价格。现在要查询出所有订单的实际价格,并将空值替换为默认价格 999。我们可以使用以下 SQL 语句实现:

SELECT order_id, product_name, IFNULL(price, 999) AS actual_price FROM orders;

执行结果如下:

order_id product_name actual_price 10001 手机 1999 10002 电视 2999 10003 冰箱 3599 10004 空调 4299 10005 洗衣机 2799 10006 微波炉 999

从结果可以看出,我们使用 IFNULL 函数将空值替换为默认价格,确保查询结果的完整性。

二、总结

本文介绍了 MySQL 中两种常用的条件表达式函数:CASE WHEN 和 IFNULL。这些函数都可以根据不同的条件对数据进行分类和处理,并返回符合条件的结果或默认值。

在实际开发中,我们可以根据具体场景选择合适的函数进行使用。此外,还需要注意函数的语法格式以及参数类型等细节问题,确保查询结果的正确性和完整性。

经验分享 程序员 微信小程序 职场和发展