这章主要介绍了如何使用通配符和LIKE操作符进行过滤数据。
这里先学习两个概念:
- 通配符(wildcard):用来匹配值的一部分的特殊字符
- 搜索模式(search pattern):由字面值、通配符或者二者的组合构成的搜索条件
LIKE操作符
在搜索子句中必须使用LIKE操作符。
严格来说LIKE并不是操作符,而是谓词(predicate),但是最终结果都是相同的。了解即可,以免在文档中看到不知所措。
%通配符
最长使用的通配符就是‘%’了,在搜索串中,%表示任何字符出现了任意次。
比如,我想找到address表中地址以‘47’开头的地址。

再比如,我想找到address表中地址以‘street’结尾的地址。

再再比如,我想查找包含‘Mosul’的地址。

通过上面3个例子可以看出:
%通配符在字符str后面,就表示以str开头的内容。
%通配符在字符str前面,就表示以str结束的内容。
str两侧都有%,就表示包含str的内容。
注意:我们搜索的条件是‘mosul’,但是查询出来的结果中是'Mosul',这说明匹配是不区分大小写的。
当然这是mysql的默认配置,这是可以在mysql中配置中改变的,至于怎么更改配置,暂时不知道。
%还有一种比较奇怪的用法,就是放在字符串中间,str1%str2。
比如查找以‘2’开头,以‘e’结尾的地址。

再次注意:%通配符不能匹配NULL。
_通配符
'_'只能匹配单个字符,比如,查询以‘12’开头的3位address_id:

_只能匹配一个字符,不能多也不能少,只有一个,一个!!
书中提到的使用通配符的技巧
虽然通配符很有用,但是通配符的搜索处理要比其他搜索花费更多的时间,性能较低。
- 不能过度使用通配符,如果其他操作可以完成就不使用通配符。
- 除非必要,尽量不要把通配符放在搜索串的开始,因为这样是最慢的
- 注意通配符的位置,放错了就不能反悔期望的数据
第8章,over,睡觉!
网友评论