• 通配符的分类:
  1. % 百分号通配符: 表示任何字符出现任意次数 (可以是 0 次).

  2. _下划线通配符: 表示只能匹配单个字符, 不能多也不能少, 就是一个字符.

  3. like 操作符: LIKE 作用是指示 mysql 后面的搜索模式是利用通配符而不是直接相等匹配进行比较.

注意: 如果在使用 like 操作符时, 后面的没有使用通用匹配符效果是和 = 一致的,

SELECT * FROM products WHERE products.prod_name like '1000';

只能匹配的结果为 1000, 而不能匹配像 JetPack 1000 这样的结果.

% 通配符使用:

  1. 匹配以 “Li” 开头的记录:(包括记录 “Li”) :
SELECT *FROM products WHERE products.prod_name like 'Li%';
  1. 匹配包含 “Li” 的记录 (包括记录 “Li”) :
SELECT* FROM products WHERE products.prod_name like '%Li%';
  1. 匹配以 “Li” 结尾的记录 (包括记录 “Li”, 不包括记录 “Li”, 也就是 Li 后面有空格的记录, 这里需要注意) :
SELECT * FROM products WHERE products.prod_name like '%Li';

_ 通配符使用:

SELECT FROM products WHERE products.prod_name like '_Li';

匹配结果为: 像"xLi"这样记录.

SELECT FROM products WHERE products.prod_name like 'Li**';

匹配结果为: 像 “Lixx” 这样的记录.(一个下划线只能匹配一个字符, 不能多也不能少)

注意事项:

  • 注意大小写, 在使用模糊匹配时, 也就是匹配文本时, mysql 是可能区分大小的, 也可能是不区分大小写的, 这个结果是取决于用户对 MySQL 的配置方式. 如果是区分大小写, 那么像liyue这样记录是不能被"Li__"这样的匹配条件匹配的. 参考: mysql 模糊查询是否区分大小写?_劭兮劭兮的博客 - CSDN 博客

  • 注意尾部空格,"%Li"是不能匹配"Li "这样的记录的.

  • 注意 NULL,% 通配符可以匹配任意字符, 但是不能匹配 NULL, 也就是说
    SELECT * FROM products WHERE products.prod_name like '%;
    是匹配不到products.prod_name为 NULL 的的记录.

正如所见, MySQL 的通配符很有用。但这种功能是有代价的:通配符搜索的处理一般要比前面讨论的其他搜索所花时间更长。使用通配符时要注意的事情:

  1. 不要过度使用通配符。如果其他操作符能达到相同的目的,应该 使用其他操作符。
  2. 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用 在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起 来是最慢的。
  3. 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数.