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 小结
通配符的含义、使用及技巧
续集:
T-SQL:毕业生出门需知系列(六)的更多相关文章
- T-SQL:毕业生出门需知系列(七)
第7课 创建计算字段 7.1 计算字段(格式化字段) 存储在数据库表中的数据一般不是应用程序所需要的格式,如: 1.需要显示公司名,同时还需要显示公司的地址,但这两个信息存储在不同的表列中. 2.列数 ...
- T-SQL:毕业生出门需知系列(五)
第5课 高级数据过滤 5.1 组合 WHERE 子句 第4课介绍的 WHERE 子句在过滤数据时都是用单一的条件. 5.1.1 AND 操作符 检索由供应商 DLL01 制造且价格小于等于 4 美元的 ...
- T-SQL:毕业生出门需知系列(四)
第4课 过滤数据 4.1 使用 WHERE 子句:过滤 只检索所需数据需要指定搜索条件(即过滤条件). WHERE 子句在表名(FROM 子句)后给出,根据 WHERE 子句中指定的条件过滤. SEL ...
- T-SQL:毕业生出门需知系列(二)
第2课 检索数据 2.1 SELECT 语句 用途:从一个或多个表中检索数据信息 关键字:作为SQL组成部分的保留字.关键字不能用作表或列的名字. 为了使用SELECT检索表数据,必须至少给出两条信息 ...
- T-SQL:毕业生出门需知系列(目录)
一.前言: 作为一个应届毕业生又要准备面试 ASP.NET 攻城狮了,以前在图书馆觉得这本书讲得挺基础,这次回家就自己买了本用来复习,顺便做下读书笔记. 第4版 二.代码下载: 官方:http://f ...
- T-SQL:毕业生出门需知系列(九)
<SQL 必知必会>读书笔记 -- 第9课 汇总数据 9.1 聚集函数:对某些行运行的函数,计算并返回一个值 案例: -- 确定表中函数 -- 获得表中某些行的和 -- 找出表列的最大值. ...
- T-SQL:毕业生出门需知系列(八)
第8课 使用函数处理数据 8.1 函数 [名词]可移植:所编写的代码可以在多个系统上运行 8.2 使用函数 8.2.1 文本处理函数 例1:使用 UPPER() 函数--将文本转换为大写 SELECT ...
- T-SQL:毕业生出门需知系列(三)
第3课 排序检索数据 3.1 排序数据(ORDER BY) 下面的 SQL 语句返回某个数据库表的单个列.观察其输出,并没有特定的顺序. SELECT prod_name FROM Products; ...
- SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性
原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 ...
随机推荐
- nginx的日常应用
nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes ; 工作进程:数目. ...
- MySQL慢查询日志总结
慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志 ...
- 日常关键字:定时关机、该任务映像已损坏或已篡改.(0x80041321)、ChaZD生词同步扇贝
我在床上用chinanet网络慢得简直令人发指,12B/S.是的你没有看错,这是我最常看到的网速.但是我最近发现电脑联网开出一个WiFi,在床上用手机上网时,网速会一点提升,可达到1KB/S(⊙﹏⊙) ...
- AmazeUI 框架知识点-组件
1.Badge 默认:添加 .am-badge class 到 <div> 或者 <span> 元素. 圆角:在默认样式的基础上添加 .am-radius class. 椭圆: ...
- jquery插入复杂表格,合并行列
此方法为个人测试所写,针对各种兼容性问题还未测试,初写的目的是easyui复杂表头有些缺陷,比如某个表头合并两列, 在easyui中这样操作无法绑定两个值 或者说我没找到 再或者 可以做个隐藏 数据列 ...
- nodejs 模块恩仇录
anywhere 一句话:随时随地将你的当前目录变成一个静态文件服务器的根目录. 安装 npm install anywhere -g anywhere -h localhost -p 8060 fa ...
- HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipe ...
- angularjs provider 供应商服务
今天学习了angularjs的provider的供应商服务,写了个例子(自定义供应商服务,也可使用angularjs内部提供的服务) var starterApp = angular.module(' ...
- hadoop2.2编程:MRUnit测试
引用地址:http://www.cnblogs.com/lucius/p/3442381.html examples: Overview This document explains how to w ...
- Linux新手扫盲(转载)
一. Linux特点 1.免费/开源: 2.支持多线程/多用户: 3.安全性好: 4.对内存和文件管理优越. Linux最小只需4M ——> 嵌入式开发 二. 文件目录 Linux系统所有软硬件 ...