相关文章推荐
冷冷的电影票  ·  hivesql ...·  2 周前    · 
骑白马的皮带  ·  React Typescipt ...·  2 年前    · 
爱跑步的香蕉  ·  Bien démarrer avec ...·  2 年前    · 

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 '__香'

编辑于 2022-08-28 19:34

文章被以下专栏收录