【MySQL】单列函数-流程控制函数if-else,case-when
使用if
等函数根据不同的条件,执行不同的处理流程
函数 | 用法 |
---|---|
IF(value,v1,v2) | 如果vlaue的值为true,返回v1,否则返回v2 |
IFNULL(v1,v2) | 如果v1不为null,返回v1;否则返回v2 |
CASE WHEN 条件1 THEN 结果1 WHEN 条件2 THEN 结果2 [ELSE resultn] END | 相当于if...else if...else |
CASE expr WHEN 常量值1 THEN 值1 WHEN 常量值2 THEN 值2 [ELSE 值n] END | 相当于switch...case... |
SELECT
IF(1>0,'正确','错误'),
IFNULL(NULL,'Hello World')
FROM DUAL;
SELECT
CASE
WHEN 1>0 THEN '1大于0'
WHEN 2>0 THEN '2大于0'
ELSE '3大于0'
END;
SELECT CASE 1
WHEN 1 THEN '我是一'
WHEN 2 THEN '我是二'
ELSE '你是谁'
END;
SELECT
employee_id,salary,
CASE WHEN salary>=15000 THEN '保安大队长'
WHEN salary>=10000 THEN '空调保安'
WHEN salary>=8000 THEN '晒太阳保安'
ELSE '无业游民'
END "职业描述"
FROM employees;
SELECT oid,`status`,
CASE `status` WHEN 1 THEN '未付款'
WHEN 2 THEN '已付款'
WHEN 3 THEN '已发货'
WHEN 4 THEN '确认收货'
ELSE '无效订单'
END "订单状态"
FROM t_order;
SELECT
last_name,job_id,salary
CASE job_id
WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary
END "REVISED_SALARY"
FROM employees;
练习:查询部门号为 10,20,30 的员工信息, 若部门号为 10, 则打印其工资的 1.1 倍, 20 号部门, 则打印其工资的 1.2 倍, 30 号部门打印其工资的 1.3 倍数。