流程处理函数可以根据不同的条件,执行不同的处理流程,可以在 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.1WHEN 20 THEN salary*1.2WHEN 30 THEN salary*1.3ELSE salary END "details"FROM employees;
