数据库学习(三)—like

like操作符用于在where子句中搜索列中的指定模式。

SQL通配符

SQL通配符必须与like操作符(当然还有not like操作符)一起使用。在SQL中,可用通配符:

通配符 描述
% 替代一个或多个字符
_(下划线) 仅替代一个字符(也可以是一个汉字)
[charlist] 字符列中的任何单一字符
[^charlist] 或者 [!charlist] 不在字符列中的任何单一字符

MySQL的支持

经过验证,我发现MySQL仅支持前两种通配符,不支持后两种通配符。下面有图为证:
有图为证
这里所看教程:点我去W3School看教程啦!
那么到这里就结束了吗?当然不是!MySQL是那么优秀的数据库,它的模糊查询功能怎么会如此简单,只是我们使用的姿势不对罢了!

正确姿势

实际上,MySQL支持两种形式的模式匹配:①标准的SQL模式匹配;②类似编程语言中正则表达式模式匹配;

  1. SQL标准的模式匹配,就是上面说的四种了。只是单纯的使用like操作符语法,只是使用前两种而已;
  2. 第二种模式匹配功能就比较强大了:
    语法:操作符rlike 和 not rlike(或者regexp 和 not regexp)
    可用通配符:
通配符 描述
. 匹配任意单个字符
? 匹配前面的子表达式0次或1次
+ 匹配前面的子表达式1次或多次
* 匹配前面的子表达式0次或多次
^ 匹配开始位置
$ 匹配结束位置
[] 表示一个集合。[hi]表示匹配h或者i,[a-d]表示匹配a,b,c,d中任意一个
{} 表示重复的次数。8{5}表示匹配5个8

有了这些,我们便可以轻松的实现标准SQL模式匹配里面不支持的两种了:
有图为证
不过要注意一点:这种类似正则表达式的模式匹配是严格区分大小写的!