第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 小结

  通配符的含义、使用及技巧

续集:

  SQLServer:《SQL必知必会》一书的读书笔记(五)

T-SQL:毕业生出门需知系列(六)的更多相关文章

  1. T-SQL:毕业生出门需知系列(七)

    第7课 创建计算字段 7.1 计算字段(格式化字段) 存储在数据库表中的数据一般不是应用程序所需要的格式,如: 1.需要显示公司名,同时还需要显示公司的地址,但这两个信息存储在不同的表列中. 2.列数 ...

  2. T-SQL:毕业生出门需知系列(五)

    第5课 高级数据过滤 5.1 组合 WHERE 子句 第4课介绍的 WHERE 子句在过滤数据时都是用单一的条件. 5.1.1 AND 操作符 检索由供应商 DLL01 制造且价格小于等于 4 美元的 ...

  3. T-SQL:毕业生出门需知系列(四)

    第4课 过滤数据 4.1 使用 WHERE 子句:过滤 只检索所需数据需要指定搜索条件(即过滤条件). WHERE 子句在表名(FROM 子句)后给出,根据 WHERE 子句中指定的条件过滤. SEL ...

  4. T-SQL:毕业生出门需知系列(二)

    第2课 检索数据 2.1 SELECT 语句 用途:从一个或多个表中检索数据信息 关键字:作为SQL组成部分的保留字.关键字不能用作表或列的名字. 为了使用SELECT检索表数据,必须至少给出两条信息 ...

  5. T-SQL:毕业生出门需知系列(目录)

    一.前言: 作为一个应届毕业生又要准备面试 ASP.NET 攻城狮了,以前在图书馆觉得这本书讲得挺基础,这次回家就自己买了本用来复习,顺便做下读书笔记. 第4版 二.代码下载: 官方:http://f ...

  6. T-SQL:毕业生出门需知系列(九)

    <SQL 必知必会>读书笔记 -- 第9课 汇总数据 9.1 聚集函数:对某些行运行的函数,计算并返回一个值 案例: -- 确定表中函数 -- 获得表中某些行的和 -- 找出表列的最大值. ...

  7. T-SQL:毕业生出门需知系列(八)

    第8课 使用函数处理数据 8.1 函数 [名词]可移植:所编写的代码可以在多个系统上运行 8.2 使用函数 8.2.1 文本处理函数 例1:使用 UPPER() 函数--将文本转换为大写 SELECT ...

  8. T-SQL:毕业生出门需知系列(三)

    第3课 排序检索数据 3.1 排序数据(ORDER BY) 下面的 SQL 语句返回某个数据库表的单个列.观察其输出,并没有特定的顺序. SELECT prod_name FROM Products; ...

  9. SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

    原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 ...

随机推荐

  1. Meta标签介绍

    Meta标签写法与作用  meta标签是在HTML网页源代码中一个重要的html标签.meta位于head区的辅助性标签,提供用户不可用的信息.   META标签用来描述一个HTML网页文档的属性,例 ...

  2. 腾讯网2016回响中国:华清远见荣获2016年度知名IT培训品牌

    12月1日,由腾讯网主办的“2016回响中国·腾讯网教育年度盛典”上,揭晓了“2016腾讯网教育年度总评榜”榜单.高端IT就业培训专家——华清远见教育集团凭借自身优质的高薪IT就业服务优势成功入围,荣 ...

  3. xcode 版本控制推送代码到远程git仓库的步骤

    一 代码推送到远程git仓库 1.在git中建立一个下项目(假设项目名称为->Mygit) 2.在xocde上新建一个测试项目(假设项目名称为GitTest) 3.打开电脑终端: 1)首先利用终 ...

  4. 通读AFN①--从创建manager到数据解析完毕

    流程梳理 今天开始会写几篇关于AFN源码解读的一些Blog,首先要梳理一下AFN的整体结构(主要是讨论2.x版本的Session访问模块): 我们先看看我们最常用的一段代码: AFHTTPSessio ...

  5. input框focus时的美化效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 使用JavaScript获取日期加随机数生成单号

    今天学习Javascript,得到一个自动生成单号的JavaScript,留下日后备用: function getNowFormatDate() { var day = new Date(); var ...

  7. IPC操作时IPC_CREAT和IPC_EXCL选项的说明

    IPC(包括消息队列,共享内存,信号量)的xxxget()创建操作时,可以指定IPC_CREAT和IPC_EXCL选项.以共享内存为例:当只有IPC_CREAT选项打开时,不管是否已存在该块共享内存, ...

  8. java 连接数据库

    1.获取服务器端数据库blog中记录数 package dataprocess; import java.io.BufferedWriter; import java.io.FileWriter; i ...

  9. Public key for mysql....rpm is not installed

    解决方案: 此时导入rpm的签名信息即可,用root登录,执行下面命令(我的linux版本是centos 5.1) 原文地址: http://my.oschina.net/u/555639/blog/ ...

  10. C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)

    详解link  有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错 ...