1概述
Mysql中的流程控制函数非常重要,可以根据不同的条件,执行不同的流程转换,可以在SQL语句中实现不同的条件选择。MySQL中的流程处理函数主要包括IF()、IFNULL()和CASE()函数。
1.1 IF函数
SELECT IF(1 > 0, '正确', '错误');
1.2 IFNULL函数
SELECT IFNULL(null,'Hello Word');
SELECT IFNULL('非空','Hello Word');
1.3 CASE WHEN
1)在 SELECT 语句中使用 CASE WHEN:
SELECT
column1,
column2,
CASE
WHEN column3 > 10 THEN 'Greater than 10'
WHEN column3 = 10 THEN 'Equal to 10'
ELSE 'Less than 10'
END AS result
FROM your_table;
2)在 WHERE 子句中使用 CASE WHEN:
SELECT *
FROM your_table
WHERE
CASE
WHEN column4 = 'active' THEN 1
WHEN column4 = 'inactive' THEN 0
ELSE NULL
END = 1;
3)在 ORDER BY 子句中使用 CASE WHEN:
SELECT *
FROM your_table
ORDER BY
CASE
WHEN column5 = 'High' THEN 1
WHEN column5 = 'Medium' THEN 2
WHEN column5 = 'Low' THEN 3
ELSE 4
END;
总体而言,CASE WHEN 语句非常灵活,可以根据需要进行多层嵌套,用于处理复杂的条件逻辑。
1.4 CASE 表达式 WHEN
SELECT oid,`status`,
CASE `status`
WHEN 1 THEN '未付款'
WHEN 2 THEN '已付款'
WHEN 3 THEN '已发货'
WHEN 4 THEN '确认收货'
ELSE '无效订单' END
FROM t_order;