一、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
列中不同的值进行排序。