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');
2、IFNULL:第一个val值,必须写null才会输出第二个value。如果是空的字符串,他也会输出第一个value,输出空。
select ifnull('ok','default');
select ifnull('','default');
select ifnull(null,'default');
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;
案例:
统计班级各个成员的成绩,展示规则如下:
------- >=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='学员成绩表'
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;