通配符、LIKE操作符

LIKE操作符

使用通配符可以创建比较特定数据的搜索模式

通配符

用来匹配值的一部分的特殊字符

搜索模式

由字面值、通配符或者两者组合构成的搜索条件

为了在搜索子句中使用通配符,必须使用LIKE操作符,指示MySQL其搜索模式利用通配符匹配而不是直接相等匹配进行比较
通配符本身实际是SQL的WHERE子句中有特殊含义的字符,其支持一下通配符

百分号%通配符

%表示任何字符出现任意次数,可以在任意位置使用,并且可以使用多个通配符

在搜索词末端

SELECT
	prod_id,
	prod_name 
FROM
	products 
WHERE
	prod_name LIKE "jet%";

其含义为检索任意prod_name以jet起头的词,jst之后的字符不限
image.png

在搜索词两端

SELECT
	prod_id,
	prod_name 
FROM
	products 
WHERE
	prod_name LIKE "%anvil%";

表示匹配任意包含anvil的prod_name的值的行
image.png

在搜索词中间

SELECT
	prod_id,
	prod_name 
FROM
	products 
WHERE
	prod_name LIKE "s%e";

image.png

注意尾空格

尾空格可能会干扰通配符匹配。在保存词anvil时,如果其后面有一个或多个空格,则子句"%anvil"将不会匹配,解决该问题的办法是使用"%anvil%"或者使用函数去掉首尾空格

注意NULL

如果值为NULL则like"%"是无法匹配的,即不能匹配NULL值

下划线_通配符

下划线_用途与百分号%一样,但只匹配单个字符而不是多个字符,且总是匹配一个字符,不能多也不能少

SELECT
	prod_id,
	prod_name 
FROM
	products 
WHERE
	prod_name LIKE "_ ton anvil";

image.png
此WHERE子句中的下划线_只匹配一个字符,所以没有匹配出.5的两个字符
image.png

使用通配符的技巧

通配符搜索的处理比其他搜索所花的时间更长。

  • 不要过度使用通配符,如果其他操作符能达到目的,应该使用其他操作符
  • 除非有必要,否则不要把通配符用在搜索模式的开始处,这样是搜索最慢的
  • 仔细注意通配符的位置,不要放错地方

这个家伙很懒,啥也没有留下😋