SQL学习06——用通配符进行过滤

Posted xingweikun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL学习06——用通配符进行过滤相关的知识,希望对你有一定的参考价值。

LIKE操作符

百分号(%)通配符

找出所有以词Fish起头的产品,区分大小写。
写成fish则不会返回Fish的结果

mysql> select * from products where prod_name like 'Fish%';
+---------+-------------------+------------+
| prod_id | prod_name         | prod_price |
+---------+-------------------+------------+
| BNBG01  | Fish bean bag toy |       3.49 |
+---------+-------------------+------------+

说明:
如果你使用的是Microsoft Access,需要使用*而不是%

通配符可以在搜索模式的任意位置使用

'%bean bag%'表示匹配任何位置上包含文本bean bag的值、

mysql> select * from products where prod_name like '%bean bag%';
+---------+---------------------+------------+
| prod_id | prod_name           | prod_price |
+---------+---------------------+------------+
| BNBG01  | Fish bean bag toy   |       3.49 |
| BNBG02  | Bird bean bag toy   |       3.49 |
| BNBG03  | Rabbit bean bag toy |       3.49 |
+---------+---------------------+------------+

找出以F开头以y结尾的所有产品
如果最后一个字符可能是空格则使用'F%y%'

mysql> select * from products where prod_name like 'F%y';
+---------+-------------------+------------+
| prod_id | prod_name         | prod_price |
+---------+-------------------+------------+
| BNBG01  | Fish bean bag toy |       3.49 |
+---------+-------------------+------------+

根据部分信息搜索电子邮件地址
例如

where email like 'b%@xxx.com'

where prod_name like '%'不会匹配产品名称为NULL的行。

下划线(_)通配符

下划线_的用途和%一样。但它只匹配单个字符,而不是多个字符。
说明:
DB2不支持通配符_
如果你使用的是Microsoft Access,需要使用而不是_

一个下划线
mysql> select * from products where prod_name like '_ inch teddy bear';
+---------+-------------------+------------+
| prod_id | prod_name         | prod_price |
+---------+-------------------+------------+
| BR01    | 8 inch teddy bear |       5.99 |
+---------+-------------------+------------+
两个下划线
mysql> select * from products where prod_name like '__ inch teddy bear';
+---------+--------------------+------------+
| prod_id | prod_name          | prod_price |
+---------+--------------------+------------+
| BR02    | 12 inch teddy bear |       8.99 |
| BR03    | 18 inch teddy bear |      11.99 |
+---------+--------------------+------------+
对比使用%
mysql> select * from products where prod_name like '% inch teddy bear';
+---------+--------------------+------------+
| prod_id | prod_name          | prod_price |
+---------+--------------------+------------+
| BR01    | 8 inch teddy bear  |       5.99 |
| BR02    | 12 inch teddy bear |       8.99 |
| BR03    | 18 inch teddy bear |      11.99 |
+---------+--------------------+------------+

方括号([])通配符

方括号[]通配符用来指定一个字符集,它必须匹配指定位置的一个字符。
并不是总支持集合
并不是所有的DBMS都支持用来创建集合的[],只有微软的Access和SQL Server支持集合。
由于我使用的是MySQL,所以这个用不了,就不再描述。

使用通配符的技巧

不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
在确实需要使用通配符时,也尽量不要把它们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的。
仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据

以上是关于SQL学习06——用通配符进行过滤的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句检索数据排序及过滤

用通配符进行过滤

SQL的学习

MySQL必知应会-第8章-用通配符进行过滤

用通配符进行过滤

[MySQL] 用通配符进行过滤