一、case函数
1.简单函数:枚举这个字段所有可能的值。适合枚举值为固定的值。
(1)语法
case column
when condition_1 then result_1
when condition_2 then result_2
when condition_3 then result_3
......
else result_4
end
(2)示例
mysql> SELECT * FROM case_demo;
+----+------+-----+
| id | name | sex |
+----+------+-----+
| 1 | 张三 | 1 |
| 2 | 李四 | 1 |
| 3 | 小花 | 2 |
| 4 | 小明 | 1 |
| 5 | 小彭 | 1 |
| 6 | 小玲 | 2 |
| 7 | 小灵 | 2 |
| 8 | 小荷 | 2 |
+----+------+-----+
mysql> SELECT name,
-> CASE sex
-> WHEN 1 THEN '男'
-> WHEN 2 THEN '女'
-> END AS sex
-> FROM case_demo;
+------+-----+
| name | sex |
+------+-----+
| 张三 | 男 |
| 李四 | 男 |
| 小花 | 女 |
| 小明 | 男 |
| 小彭 | 男 |
| 小玲 | 女 |
| 小灵 | 女 |
| 小荷 | 女 |
+------+-----+
2.搜索函数:可以写判断,并且搜索函数只会返回第一个符合条件的值,其他case
被忽略。适应表达式与一组不同的值进行匹配,枚举值不为固定值,而是一组范围。
(1)语法
case
when condition_1 then result_1
when condition_2 then result_2
when condition_3 then result_3
......
else result_4
end
(2)示例
mysql> SELECT * FROM grade_demo;
+----+------+-------+
| id | name | grade |
+----+------+-------+
| 1 | 小明 | 60.5 |
| 2 | 小明 | 60 |
| 3 | 小麦 | 78 |
| 4 | 小霞 | 80.5 |
| 5 | 小恒 | 90 |
| 6 | 小荷 | 98.5 |
| 7 | 小玲 | 40.8 |
| 8 | 小何 | 55.9 |
| 9 | 小格 | 70 |
+----+------+-------+
mysql> SELECT name,
-> CASE
-> WHEN grade >=90 THEN '优秀'
-> WHEN grade >=70 THEN '良好'
-> WHEN grade >=60 THEN '及格'
-> ELSE '不及格'
-> END AS '分数评级'
-> FROM grade_demo;
+------+----------+
| name | 分数评级 |
+------+----------+
| 小明 | 及格 |
| 小明 | 及格 |
| 小麦 | 良好 |
| 小霞 | 良好 |
| 小恒 | 优秀 |
| 小荷 | 优秀 |
| 小玲 | 不及格 |
| 小何 | 不及格 |
| 小格 | 良好 |
+------+----------+
mysql> SELECT name,
-> CASE
-> WHEN sex = 1 THEN '男'
-> WHEN sex = 2 THEN '女'
-> END AS sex
-> FROM case_demo;
+------+-----+
| name | sex |
+------+-----+
| 张三 | 男 |
| 李四 | 男 |
| 小花 | 女 |
| 小明 | 男 |
| 小彭 | 男 |
| 小玲 | 女 |
| 小灵 | 女 |
| 小荷 | 女 |
+------+-----+
二、substring函数
(1)语法
- substring(string,postion,length)
- subtring(string from position for length)
string:是要提取子字符串的字符串。
position:是一个整数,用于指定子串的起始字符,position可以是正或负整数。
如果position为正,则SUBSTRING函数从字符串的开始处提取子字符串。请参阅以下字符串。
如果position参数为零,则SUBSTRING函数返回一个空字符串。
如果position为负,则SUBSTRING函数从字符串的结尾处开始,提取子字符串。
length:length是一个正整数,用于指定子字符串的字符数。
如果position和length的总和大于字符串的字符数,则SUBSTRING函数将返回一个从位置开始到字符串末尾的子串。
如果length被省略,SUBSTRING函数将返回一个从起始位置到字符串末尾的子串。
(2)示例
mysql> SELECT SUBSTRING('mysql substring',2,6);
+----------------------------------+
| SUBSTRING('mysql substring',2,6) |
+----------------------------------+
| ysql s |
+----------------------------------+
mysql> SELECT SUBSTRING('mysql substring',6,4);
+----------------------------------+
| SUBSTRING('mysql substring',6,4) |
+----------------------------------+
| sub |
+----------------------------------+
mysql> SELECT SUBSTRING('mysql substring',6,15);
+-----------------------------------+
| SUBSTRING('mysql substring',6,15) |
+-----------------------------------+
| substring |
+-----------------------------------+
mysql> SELECT SUBSTRING('mysql substring',6);
+--------------------------------+
| SUBSTRING('mysql substring',6) |
+--------------------------------+
| substring |
+--------------------------------+
mysql> SELECT SUBSTRING('mysql substring',0,1);
+----------------------------------+
| SUBSTRING('mysql substring',0,1) |
+----------------------------------+
| |
+----------------------------------+
mysql> SELECT SUBSTRING('mysql substring',0);
+--------------------------------+
| SUBSTRING('mysql substring',0) |
+--------------------------------+
| |
+--------------------------------+