流程处理函数可以根据不同的条件,执行不同的处理流程,可以在 SQL 语句中实现不同的条件选择。
MySQL中的流程处理函数主要包括 IF()
、IFNULL()
和 CASE()
函数。
函数 | 用法 |
---|---|
IF(value, v1, v2) |
如果 value 的值为 TRUE,返回 v1,否则返回 v2 |
IFNULL(v1, v2) |
如果 v1不为 NULL,返回 v1,否则返回 v2 |
CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 ... [ELSE resultn] END |
相当于 Java 的 if…else if…else… |
CASE expr WHEN 常量值1 THEN 值1 WHEN 常量值1 THEN 值1 .... [ELSE 值n] END |
相当于 Java 的 switch…case… |
SELECT IF(1 > 0,'正确','错误');
SELECT IFNULL(null,'Hello Word');
SELECT employee_id,salary, CASE WHEN salary>=15000 THEN '1'
WHEN salary>=10000 THEN '2'
WHEN salary>=8000 THEN '3'
ELSE '4' END "描述"
FROM employees;
查询部门号为 10,20,30 的员工信息,若部门号为 10,则打印其工资的 1.1 倍,20 号部门,则打印其工资的 1.2 倍,30 号部门打印其工资的 1.3 倍数。
SELECT employee_id,last_name,department_id,salary,
CASE department_id WHEN 10 THEN salary*1.1
WHEN 20 THEN salary*1.2
WHEN 30 THEN salary*1.3
ELSE salary END "details"
FROM employees;