【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 倍数。

posted @ 2022-08-12 14:29  植树chen  阅读(115)  评论(0编辑  收藏  举报