通配符、LIKE操作符
LIKE操作符
使用通配符可以创建比较特定数据的搜索模式
通配符
用来匹配值的一部分的特殊字符
搜索模式
由字面值、通配符或者两者组合构成的搜索条件
为了在搜索子句中使用通配符,必须使用LIKE操作符,指示MySQL其搜索模式利用通配符匹配而不是直接相等匹配进行比较
通配符本身实际是SQL的WHERE子句中有特殊含义的字符,其支持一下通配符
百分号%通配符
%表示任何字符出现任意次数,可以在任意位置使用,并且可以使用多个通配符
在搜索词末端
SELECT
prod_id,
prod_name
FROM
products
WHERE
prod_name LIKE "jet%";
其含义为检索任意prod_name以jet起头的词,jst之后的字符不限
在搜索词两端
SELECT
prod_id,
prod_name
FROM
products
WHERE
prod_name LIKE "%anvil%";
表示匹配任意包含anvil的prod_name的值的行
在搜索词中间
SELECT
prod_id,
prod_name
FROM
products
WHERE
prod_name LIKE "s%e";
注意尾空格
尾空格可能会干扰通配符匹配。在保存词anvil时,如果其后面有一个或多个空格,则子句"%anvil"将不会匹配,解决该问题的办法是使用"%anvil%"或者使用函数去掉首尾空格
注意NULL
如果值为NULL则like"%"是无法匹配的,即不能匹配NULL值
下划线_通配符
下划线_用途与百分号%一样,但只匹配单个字符而不是多个字符,且总是匹配一个字符,不能多也不能少
SELECT
prod_id,
prod_name
FROM
products
WHERE
prod_name LIKE "_ ton anvil";
此WHERE子句中的下划线_只匹配一个字符,所以没有匹配出.5的两个字符
使用通配符的技巧
通配符搜索的处理比其他搜索所花的时间更长。
- 不要过度使用通配符,如果其他操作符能达到目的,应该使用其他操作符
- 除非有必要,否则不要把通配符用在搜索模式的开始处,这样是搜索最慢的
- 仔细注意通配符的位置,不要放错地方
Comments | 0 条评论