上节课给大家介绍了MySQL中常见的基础用法 MySQL常用基础用法集锦,这节课我们准备对上节课的内容做个补充,本期内容我们想跟大家聊聊MySQL模糊匹配关键字LIKE以及CASE WHEN的基本用法。
1、模糊匹配LIKE
在 MySQL 中,LIKE 关键字主要用于搜索匹配字段中的指定内容。其语法格式如下:
[NOT] LIKE '字符串'
其中:
注:通配符是一种特殊语句,主要用来模糊查询。当不知道真正字符或者懒得输入完整名称时,可以使用通配符来代替一个或多个真正的字符串。
LIKE 关键字支持百分号“%”和下划线“_”通配符。两者的区别是,“%”能代表任何长度的字符串,字符串的长度可以为 0。“_”只能代表单个字符,字符的长度不能为 0。“%”是 MySQL 中最常用的通配符,下面我们将专门针对“%”通配符进行具体讲解。
1)在titanic乘客信息表中,查找所有以“Green”开头的乘客姓名。
select name from titanic where name like "Green%";
其输出结果如下
可以看到,结果把所有以“Green”开头的乘客姓名都找到了,其中包括Greenfield、Green、Greenberg三种。
2)在titanic乘客信息表中,查找所有姓名中包含Miss的乘客姓名。
select name from titanic
where name like "%Miss%";
其输出结果如下
可以看到,结果把所有乘客姓名中包含“Miss的乘客都找出来了,其中包含姓名以“Miss”开头、以“Miss”结尾或中间包含“Miss”几种情况。
3)在titanic表中,查找所有以“Mr”结尾的乘客姓名。
select name from titanic
where name like "%Mr";
其输出结果如下
可以看到,结果中确实把所有姓名以“Mr”结尾的乘客都找出来了。
2、CASE WHEN
在MySQL中,一般来说CASE WHEN 用法算是进阶用法,但在日常工作中,它也是非常常用的,其语法格式如下:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
CASE WHEN 经常应用在分组查询场景中。例如,在titanic乘客信息表中,查询乘客id、姓名,当乘客姓名中包含“Mr”时,以“先生”表示尊称;当乘客姓名中包含“Miss”时,以“小姐”表示尊称。
select PassengerId,name
,case when name like "%Mr%" then "先生"
when name like "%Miss%" then "小姐" end resp_name
from titanic ;
其输出结果如下
同时,我们想分组统计尊称中各个取值的人数情况。
select resp_name,count(PassengerId)
from
( select PassengerId,NAME,case when name like "%Mr%" then "先生"
when name like "%Miss%" then "小姐" end resp_name
from titanic ) a
GROUP by resp_name;
其结果如下
OK,以上就是关于模糊匹配关键字LIKE以及CASE WHEN的基本用法。