使用通配符进行过滤
本章使用 LIKE 操作符进行通配搜索
通配符一般配合 LIKE 子句 (LIKE 也叫做模糊查询)
通配符 本身实际是 MYSQL 的 WHERE 子句中有特殊含义的字符,SQL 支持以下几种通配符
百分号(%)通配符
最常使用的通配符是百分号(%), 在搜索串中,%表示任何字符出现的任意次数
- 比如我想要找 jet 开头的 名字
SELECT * FROM user WHERE name like 'jet%';
分析 在这条语句执行的时候他会检索以 jet 开头的名字 % 告诉 Mysql 接受 jet 之后的任意字符,不管他有多少字符,这里特别注意的就是它区分大小写 因为里面的数据不一样了
- 通配符也可以使用多个
SELECT * FROM name LIKE '%ai%';
它查询到的结果就是名字里面包含 ai 的
这里特别注意的就是 尾空格 尾空格会干扰通配符的匹配。比如结尾要是后面有一个或者多个空格 like ‘%ai’ 将不会匹配他们,因为最后有多余的字符.解决这个问题最简单的办法就是后面加一个%,还有一个更好的办法就是使用函数(利用函数去掉首尾空格)
- 还有一点 特别注意 NULL
虽然似乎% 通配符可以匹配任何东西,但有一个例外即 NULL,即使 WHERE name LIKE ‘%’也匹配不出来 NULL 作为产品的行
下划线(_)通配符
另外一个有用的通配符是下划线(_) 下划线的用途与%一样,但下划线只匹配单个字符串而不是多个字符
SELECT * FROM products WHERE name LIKE '_money'
它表示名字前面 第一位是随便的,后面的是 money,有多少个_就站多少位
使用通配符技巧
不要过度使用通配符,如果其他操作能达到相同的目的,应该使用其他操作符
通配符搜索速度是最慢的
仔细注意通配符的位置 如果放错地方,可能不会返回想要的数据