版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012292754/article/details/89557350
1 like
操作符
- 通配符本身实际上是SQL的WHERE子句中有特殊含义的字符,SQL支持几种通配符。为在搜索子句中使用通配符,必须使用LIKE操作符。LIKE指示DBMS,后跟的搜索模式利用通配符匹配而不是简单的相等匹配进行比较。
- 通配符搜索只能用于文本字段(串),非文本数据类型字段不能使用通配符搜索。
2 谓词(predicate)
操作符何时不是操作符?答案是,它作为谓词时。从技术上说,LIKE是谓词而不是操作符。
3 %
通配符
- 表示任何字符出现任意次数
SELECT prod_id,prod_name
from products
where prod_name like 'TNT%';
- 通配符可在搜索模式中的任意位置使用,并且可以使用多个通配符;
SELECT prod_id,prod_name
from products
WHERE prod_name like '%ton%';
%
不会匹配NULL
原表
SELECT cust_id,cust_email from customers
where cust_email like '%';
4 _
通配符
- 只能匹配单个字符
5 []
通配符
- 方括号([])通配符用来指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符。
SELECT cust_name from customers
where cust_name REGEXP '^[CM]';
6 MySQL使用正则表达式
MySQL仅支持多数正则表达式实现的一个很小的子集。
SELECT prod_name
from products
where prod_name REGEXP '1000'
order by prod_name;
SELECT prod_name
from products
where prod_name REGEXP '.000'
order by prod_name;
6.1 LIKE
和 regexp
区别
like
匹配整个列;regexp
在列值内进行匹配;
6.2 MySQL正则匹配不区分大小写
- 为了区分大小写,可以使用关键字
binary
SELECT prod_name
from products
WHERE prod_name REGEXP BINARY 'JetPack .000'
order by prod_name;
7 通配符使用技巧
通配符搜索一般比前面讨论的其他搜索要耗费更长的处理时间。
- 不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
- 在确实需要使用通配符时,也尽量不要把它们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的。
- 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。