SQL必知必会 第六课 笔记——用通配符进行过滤

第6课 用通配符进行过滤
       这一课介绍什么是通配符、如何使用通配符以及怎样使用LIKE操作符进行通配搜索,以便对数据进行复杂过滤。
Q: 怎样搜索产品名中包含文本bean bag的所有产品?
A; 如果你想找出名称包含bean bag的所有产品,可以构造一个通配符搜索模式,找出在产品名的任何位置出现bean bag的产品。
通配符本身实际上是SQL的WHERE子句中有特殊含义的字符.为在搜索子句中使用通配符,必须使用LIKE操作符。LIKE指示DBMS,后跟的搜索模式 利用通配符匹配而不是简单的相等匹配进行比较。
注意: 通配符搜索只能用于文本字段(串),非文本数据类型字段不能使用通配符搜索.

6.1.1 百分号(%)通配符
百分号(%)通配符:%表示任何字符出现任意次数,
eg. 为了找出所有以词Fish起头的产品:
SELECT prod_id, prod_name
FROM Products
WHERE prod_name LIKE 'Fish%';
这里,%告诉DBMS接受Fish之后的任意字符,不管它有多少字符。
%可以用在任意位置,比如LIKE' %bean bag%'表示匹配任何位置上包含文本bean bag的值,不论它之前或之后出现什么字符,LIKE 'F%y'表示找出以F起头、以y结尾的所有产品。
警告:请注意NULL通配符%看起来像是可以匹配任何东西,但有个例外,这就是NULL。子句WHERE prod_name LIKE '%'不会匹配产品名称为NULL的行。

6.1.2 下划线(_)通配符
下划线的用途与%一样,但它 只匹配单个字符,而不是多个字符。
与%能匹配0个字符不同,_总是刚好匹配一个字符,不能多也不能少。
eg.WHERE prod_name LIKE ' __ inch teddy bear';搜索模式要求匹配两个通配符而不是一个

6.1.3 方括号([ ])通配符
方括号([])通配符用来指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符
例如,找出所有名字以J或M起头的联系人,可进行如下查询:
SELECT cust_contact
FROM Customers
WHERE cust_contact LIKE '[JM]%'
ORDER BY cust_contact;
此语句的WHERE子句中的模式为'[JM]%'。这一搜索模式使用了两个不同的通配符。[JM]匹配任何以方括号中字母开头的联系人名,它也只能匹配单个字符。因此,任何多于一个字符的名字都不匹配。[JM]之后的%通配符匹配第一个字符之后的任意数目的字符,返回所需结果.
此通配符可以用前缀字符^(脱字号)来否定。'[^JM]%

通配符搜索一般比前面讨论的其他搜索要耗费更长的处理时间。

猜你喜欢

转载自blog.csdn.net/zjhysj/article/details/80502978