MySQL If Case函数及其应用场景

发布时间:2023-05-21

一、IF函数

IF函数是MySQL中常用的条件判断函数之一,语法如下:

IF(expr1, expr2, expr3)

其中expr1为条件表达式,如果为真则返回expr2的结果,否则返回expr3的结果。可以简单理解为: 若条件成立,则返回A,否则返回B。

二、CASE函数

CASE函数也是MySQL中常见的条件函数之一,它类似于程序中的switch语句,可以根据不同的条件返回不同的结果。它有两种语法形式:

1、简单CASE:

CASE expr
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE result
END

其中,expr为需要被匹配的表达式,后面的WHEN...THEN子句为条件判断语句,当expr匹配某一value时,才会执行result。当expr不匹配任何value时,才会执行ELSE后面的result

2、搜索CASE:

CASE 
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END

与简单CASE相比,搜索CASE在语法上不需要提供任何表达式或者其他条件。只需要根据需要的匹配和匹配后的结果即可。其条件不是基于一个固定的表达式,而是基于提供的条件逐项检查,一旦找到合适的条件就执行结果。

三、IF和CASE的应用场景

1、数据筛选和分类

IF语句通常用于数据筛选和分类。例如,我们可以使用IF来识别顾客是否大于平均数量购买了某个产品。

SELECT customerName, 
    IF(orderAmount > AVG(orderAmount), 'Above Average', 'Below Average') AS 'Purchase' 
FROM orders 
GROUP BY customerName;

以上代码以客户名称为分组条件,计算客户所订购的金额是否高于平均值,并根据结果分类。

2、数据替换和转换

我们也可以使用CASE来替换或转换数据。例如:

SELECT employeeName, title, 
    CASE 
        WHEN title = 'Sales Manager' THEN 'Senior Sales Manager' 
        WHEN title = 'Sales Representative' THEN 'Junior Sales Manager' 
        ELSE 'Unknown Role' 
    END AS 'NewTitle' 
FROM employees;

以上代码将titles列中的字符细分成不同的类别,并替换成新的详细数据。

3、数据排序和排名

IF语句可以使用在排序和排名中,用于排序规则的定义。

SELECT productName, productVendor, buyPrice, 
    IF(productVendor = 'Exotic Liquids', 1, 
        IF(productVendor = 'Cruz Del Sur Music', 2, 
            IF(productVendor = 'Gourmet Lanchonetes', 3, 0))) AS 'VendorSeq' 
FROM products 
ORDER BY VendorSeq, buyPrice DESC;

以上代码以buyPrice为条件对商品进行排序,并将productVendor列中不同的值进行排序。