T-SQL:毕业生出门需知系列(六)
第6课 用通配符进行过滤
6.1 LIKE 操作符
前面介绍的所有操作符都是针对已知值进行过滤。但是,这种过滤方法并不是任何时候都好用。
例如:怎样搜索产品名中包含文本 bean bag 的所有产品?
【注意】通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用通配符搜索
【解析】通配符:用来匹配值的一部分的特殊字符
6.1.1 百分号(%)通配符
%:任何字符出现任意次数
例1:找出所有以词 Fish 起头的产品
SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE 'Fish%';
例2:可以使用多个通配符
搜索包含文本 bean bag 的值
SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE '%bean bag%';
例3:找出以 F 起头、以 y 结尾的所有产品?
SELECT prod_name
FROM Products
WHERE prod_name LIKE 'F%y';
【提示】根据部分信息搜索电子邮件
有一种情况下把通配符放在搜索模式中间是很有用的,就是根据邮件的一部分来查找电子邮件,例如:
WHERE email LIKE 'b%@qq.com'
【注意】除了能匹配一个或多个字符外,%还能匹配0个字符。(0,1或多个字符)
【注意】如果产品后面有一堆空格,'F%y'应改成'F%y%';或者用函数去掉空格
【注意】WHERE prod_name LIKE '%' 不会匹配 NULL 的行
6.1.2 下划线(_)通配符
_:只匹配单个任意字符
例4:
SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE '__ inch teddy bear'; -- 分析:LIKE 后面跟有文本的两个通配符
结果:2个
例5:观察使用 % 和 _ 的不同
SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE '% inch teddy bear';
6.1.3 方括号([])通配符
[]:用来匹配一个字符集,它必须匹配指定位置(通配符的位置)中的一个字符
例6:找出所有名字以 J 或 M 起头的联系人
SELECT cust_contact FROM Customers WHERE cust_contact LIKE '[JM]%'; -- 分析:[JM] 匹配方括号中任意一个字符,它也只能匹配单个字符。[JM]之后的 % 通配符匹配第一个字符之后的所有字符
例7:查询匹配非 J 或 M 字符开头的任意联系人名
SELECT cust_contact FROM Customers WHERE cust_contact LIKE '[^JM]%'; -- 分析:通过前缀字符 ^(脱字号)来否定
方法二:使用 NOT
例8:
SELECT cust_contact FROM Customers WHERE NOT cust_contact LIKE '[JM]%';
6.2 使用通配符的技巧
【性能】通配符搜索一般比前面讨论的其它搜索要耗费更长时间。
【技巧】
1.不要过度使用通配符。如果其它操作符能达到相同目的,应该使用其它操作符
2.尽量不要讲它们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的。
3.仔细注意通配符的位置
6.3 小结
通配符的含义、使用及技巧
续集:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?