说明:本文所使用的数据库样例表创建脚本下载地址:https://github.com/zhaoxd298/mysql_scripts
一、概念介绍
通配符(wildcard):用来匹配值的一部分的特殊字符。
搜索模式(search pattern):由字面值、通配符或两者组合构成的搜索条件。
LIKE操作符:为在搜索子句中使用通配符,必须使用LIKE操作符。LIKE操作符只是MySQL后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。
谓词:操作符何时不是操作符?答案是它作为谓词(predicate)时。从技术上说,LIKE是谓词而不是操作符。虽然最终的结果是相同的。
二、百分号(%)通配符
在搜索串中,%表示任何字符出现任意次数。例如,为了找出所有以词jet开头的产品,可使用一下SELECT语句:
mysql> USE crashcourse;
mysql> SELECT prod_id, prod_name
-> FROM products
-> WHERE prod_name LIKE 'jet%';
执行结果:
注意区分大小写:根据MySQL的配置方式,搜索可以是区分大小写的。如果区分大小写,本例子将没有任何数据返回。
通配符可以在搜索模式中任意位置使用,并可以使用多个通配符。下面例子使用两个通配符,他们位于模式的两端:
mysql> SELECT prod_id, prod_name
-> FROM products
-> WHERE prod_name LIKE '%anvil%';
执行结果:
注意:由本次试验可知,%处理可以匹配一个或多个字符外,%还可以匹配0个字符。
三、下划线(_)通配符
下划线通配符和%用途一样,但下划线通配符只能匹配单个字符。举个例子:
mysql> SELECT prod_id, prod_name
-> FROM products
-> WHERE prod_name LIKE '_ ton anvil';
执行结果:
若把本示例中的_换成%,执行结果如下:
发现用%来匹配多了一行。与%能匹配0个字符不一样,_总是匹配一个字符,不能多也不能少。