目录
1、简介:
MySQL中的流程控制函数,是用在SQL语句中来根据条件来进行筛选,从而提高我们语句的效率。
2、分类:
函数 | 功能 |
---|---|
IF(VALUE,TRUE,FALSE) | 如果value为True则返回为true,否则就返回false |
IFNULL(value1,value2) | 如果value1的返回值不为空,返回value1,否则返回value2 |
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE result END |
其中,condition1、condition2等是条件表达式,result1、result2等是与相应条件匹配时返回的结果,result是当没有任何条件匹配时返回的结果。if else的多层嵌套 |
CASE [expr] WHEN [value1] THEN result1 WHEN [value2] THEN result2 ... ELSE result END |
在这个语法中,[expr] 是要进行条件判断的表达式,[value1] 、[value2] 等是可能的值,result1 、result2 等是与相应值匹配时返回的结果,ELSE 是可选的,用于指定当没有值匹配时返回的默认结果。 |
3、实际操作
1.if的操作
-- IF(VALUE,TRUE,FALSE) 如果value为True则返回true,否则返回false
select if(3>2,'我是成立的','我好像不成立') as 'result';
结果:
2.ifnull的操作
-- IFNULL(VALUE1,VALUE2) 如果value1的返回值不为空,则返回VALUE1,否则返回VALUE2.
select IFNULL((3 > 2),'看看我行不行') as '结果';
-- MySQL中用1来表示true值,0来表示false.
select IFNULL((3 < 2),'看看我行不行') as '结果';
-- MySQL中返回值为null值时,再看看
select IFNULL(null,'看看我行不行') as '结果';
结果1:
结果2:
结果3:
3.case when的操作
在MySQL中,`CASE WHEN`语句可以使用多个`WHEN`和`THEN`子句,用于根据不同的条件返回不同的值或执行不同的操作。下面是`CASE WHEN`语句的基本语法:
```sql
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
```在这个语法中,`CASE`是关键字,`condition1`、`condition2`是条件表达式,`result1`、`result2`是与相应的条件匹配时返回的结果,`ELSE`是可选的,用于指定当没有条件匹配时返回的默认结果。
以下是一个示例,演示如何使用`CASE WHEN`语句在查询结果中创建一个新列:
```sql
SELECT column1, column2,
CASE
WHEN column3 > 10 THEN 'Large'
WHEN column3 > 5 THEN 'Medium'
ELSE 'Small'
END AS size
FROM table_name;
```在这个示例中,根据列`column3`的值,`CASE WHEN`语句返回不同的`size`。如果`column3`大于10,将返回'Large',如果大于5但小于等于10,将返回'Medium',否则将返回'Small'。
`CASE WHEN`语句还可以在其他查询操作中使用,例如在`UPDATE`或`INSERT`语句中条件性地设置特定的值。具体用法类似,只是语句的上下文不同。
/*
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE result
END
其中,condition1、condition2等是条件表达式,result1、result2等是与相应条件匹配时返回的结果,result是当没有任何条件匹配时返回的结果。
*/
-- 创建一个学生成绩表
CREATE TABLE stu_score(
name varchar(30) NOT NULL COMMENT '学生姓名',
subject varchar(30) COMMENT '学科',
score DOUBLE COMMENT '学生成绩'
)COMMENT '学生成绩表';
INSERT INTO stu_score(name,subject,score) values ('张三','语文',78),
('张三','数学',87),
('张三','英语',65),
('李四','语文',88),
('李四','数学',90),
('李四','英语',98),
('王五','语文',73),
('王五','数学',88),
('王五','英语',90);
-- 统计学生成绩的的优秀人数
select name,subject,
case
when score > 90 then '优秀'
when score > 80 then '良好'
when score > 70 then '中等'
else '一般'
end as '成绩等级'
from stu_score;
结果:
4.case choice when的操作
在MySQL中,`CASE [expr] WHEN [value]`语句是一种简化版,其实叫他阉割版也行,`CASE WHEN`语句,用于根据给定的表达式和值进行条件判断,只能做相等的情况。类似于Java中的
switch(条件)
case(项):
执行语句
它的一般语法如下:
```sql
CASE [expr]
WHEN [value1] THEN result1
WHEN [value2] THEN result2
...
ELSE result
END
```在这个语法中,`[expr]`是要进行条件判断的表达式,`[value1]`、`[value2]`等是可能的值,`result1`、`result2`等是与相应值匹配时返回的结果,`ELSE`是可选的,用于指定当没有值匹配时返回的默认结果。
以下是一个示例,演示如何使用`CASE [expr] WHEN [value]`语句在查询结果中创建一个新列:
```sql
SELECT column1, column2,
CASE column3
WHEN 'A' THEN 'Option 1'
WHEN 'B' THEN 'Option 2'
ELSE 'Other Options'
END AS choice
FROM table_name;
```在这个示例中,根据列`column3`的值与给定的值进行比较,`CASE [expr] WHEN [value]`语句返回不同的`choice`。当`column3`的值为'A'时,返回'Option 1',当值为'B'时,返回'Option 2',否则返回'Other Options'。
注意:(阉割版)需要注意的是,与完整的`CASE WHEN`语句相比,`CASE [expr] WHEN [value]`语句在条件判断时只能使用相等(=)比较,而不能使用其他比较操作符(如大于、小于等)。
-- 统计学生成绩的的优秀人数
select name,subject,
case score
when 90 then '优秀'
when 80 then '良好'
when 70 then '中等'
else '一般'
end as '成绩等级'
from stu_score;
结果: