MySQL函数—流程函数

MySQL函数—流程函数:用于实现条件筛选,从而题搞语句的效率。

MySQL函数—流程函数
函数 功能
IF(value,t,f) 如果value为true,则返回t,否则返回f
IFNULL(value1,value2) 如果value1不为空,返回value1,否则返回value2
CASE WHEN [val1] THEN [res1]...ELSE [default] END 如果val1为true,返回res1,...否则返回default默认值
CASE [expr] WHEN [val1] THEN [res1]...ELSE [default] END 如果expr的值等于val1,返回res1,...否则返回default默认值

1、IF

 select if(false,'ok','Error');

 select if(true,'ok','Error');

MySQL函数—流程函数_第1张图片

2、IFNULL:第一个val值,必须写null才会输出第二个value。如果是空的字符串,他也会输出第一个value,输出空。

select ifnull('ok','default');
select ifnull('','default');
select ifnull(null,'default');

MySQL函数—流程函数_第2张图片

MySQL函数—流程函数_第3张图片

3、CASE WHEN [val1] THEN [res1],...ELSE [default] END

CASE [expr] WHEN [val1] THEN [res1]...ELSE [default] END

查询emp表的员工姓名和工作地址(北京/上海-------》一线城市,    其他----------》二线城市)

SELECT 
name,
CASE WHEN WORK_ADDRESS='北京' THEN '一线城市' WHEN WORK_ADDRESS='上海' THEN '一线城市' ELSE '二线城市' END '工作地址'
from emp;

SELECT 
name,
CASE WORK_ADDRESS WHEN'北京' THEN '一线城市' WHEN '上海' THEN '一线城市' ELSE '二线城市' END '工作地址'
from emp;

MySQL函数—流程函数_第4张图片

MySQL函数—流程函数_第5张图片

 案例:

统计班级各个成员的成绩,展示规则如下:

------- >=85    优秀

------- >=60   及格

------- 否则    不及格 

CREATE TABLE `score` (
  `id` int DEFAULT NULL COMMENT 'ID',
  `name` varchar(20) DEFAULT NULL COMMENT '姓名',
  `math` int DEFAULT NULL COMMENT '数学',
  `english` int DEFAULT NULL COMMENT '英语',
  `chinese` int DEFAULT NULL COMMENT '语文'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='学员成绩表' 

MySQL函数—流程函数_第6张图片

SELECT
name,
CASE WHEN math >=85 THEN '优秀' WHEN math >=60 THEN '及格' ELSE '不及格' END '数学',
CASE WHEN english >=85 THEN '优秀' WHEN english >=60 THEN '及格' ELSE '不及格' END '英语',
CASE WHEN chinese >=85 THEN '优秀' WHEN chinese >=60 THEN '及格' ELSE '不及格' END '语文'
from score;

MySQL函数—流程函数_第7张图片

你可能感兴趣的:(mysql,数据库)