SQL Server:九、模糊查询:查询 0个、1个、多个字符,查询范围
本系列是一个 SQL Server 的学习笔记,教程的创作者是 B站 up主 D丝学编程 。这个教程在我对比了多个 B站教程以后,认为是讲得深入浅出的,非常利于初学者学习的。原教程链接如下:
一、用什么工具来实现模糊查询?
模糊查询使用 like 关键字和通配符结合来实现。通配符具体含义如下:
%:匹配 0个、1个、多个字符
_:匹配有且只有 1个字符
[]:匹配范围内。这个可以是一个列表,用逗号分隔每一个元素,例如[2,3,4,5];也可以是一个区间,用“-”号连接两个端点,例如[2,5]。
[^]:匹配不在范围内。这个可以是一个列表,用逗号分隔每一个元素;也可以是一个区间,用“-”号连接两个端点,例如[2,5]。
二、模糊查询示例
模糊查询的功能实现的效果类似于 Excel 中的筛选,可以提取出来包含某一个字符串的记录。
查询出 姓 刘的员工信息
百分号代表 0个、1个、多个字符
Select * from People where PeopleName like '刘%'
查询出名字中 含有 “尚”的员工
这个和前一个的区别在于,没有限制“尚”字必须在开头,可以在任何位置
也就是“尚”字的前后都可以由 0个、1个、多个字符
Select * from People where PeopleName like '%尚%'
查询出名字中含有“尚”或者“史”的员工信息
Select * from People where PeopleName like '%尚%' or PeopleName like '%史%'
查询姓刘的员工姓名,名字是 2个字
下划线代表有且仅有 1个字
Select * from People where PeopleName like '刘_'
查询电话号码开头为 138 的员工信息
Select * from People where PeoplePhone like '138________'
查询电话号码开头为 138,且第四位是7或者8,最后一个号码是5
用 [] 表示匹配范围内
Select * from People where PeoplePhone like '138[7,8]______5'
查询电话号码开头为 138,第四位为在 2-5 之间,最后一个号码不是 2 和 3
[^]表示不在这个范围内
Select * from People where PeoplePhone like '138[2,3,4,5]______[^2,3]'
Select * from People where PeoplePhone like '138[2-5]______[^2-3]
三、用 SUBSTRING() 函数和 len() 函数进行模糊查询
SUBSTRING(要操作的字符串,从第几位开始截取其中头一个字符是第0位,截取几位)
len()求字符串长度,len(字符串)
Select SUBSTRING('hello world', 3,1)
Select * from People where SUBSTRING(PeopleName,1,1)='刘' and len(PeopleName) = 2
查询名字最后一个字为香,名字一共是三个字的员工
法一:
Select * from People where SUBSTRING(PeopleName,3,1) = '香' and len(PeopleName) = 3
法二:
Select * from People where PeopleName like '__香'