SQL通配符
SQL通配符必须与like操作符(当然还有not like操作符)一起使用。在SQL中,可用通配符:
通配符 | 描述 |
---|---|
% | 替代一个或多个字符 |
_(下划线) | 仅替代一个字符(也可以是一个汉字) |
[charlist] | 字符列中的任何单一字符 |
[^charlist] 或者 [!charlist] | 不在字符列中的任何单一字符 |
MySQL的支持
经过验证,我发现MySQL仅支持前两种通配符,不支持后两种通配符。下面有图为证:
这里所看教程:点我去W3School看教程啦!
那么到这里就结束了吗?当然不是!MySQL是那么优秀的数据库,它的模糊查询功能怎么会如此简单,只是我们使用的姿势不对罢了!
正确姿势
实际上,MySQL支持两种形式的模式匹配:①标准的SQL模式匹配;②类似编程语言中正则表达式模式匹配;
- SQL标准的模式匹配,就是上面说的四种了。只是单纯的使用like操作符语法,只是使用前两种而已;
- 第二种模式匹配功能就比较强大了:
语法:操作符rlike 和 not rlike(或者regexp 和 not regexp)
可用通配符:
通配符 | 描述 |
---|---|
. | 匹配任意单个字符 |
? | 匹配前面的子表达式0次或1次 |
+ | 匹配前面的子表达式1次或多次 |
* | 匹配前面的子表达式0次或多次 |
^ | 匹配开始位置 |
$ | 匹配结束位置 |
[] | 表示一个集合。[hi]表示匹配h或者i,[a-d]表示匹配a,b,c,d中任意一个 |
{} | 表示重复的次数。8{5}表示匹配5个8 |
有了这些,我们便可以轻松的实现标准SQL模式匹配里面不支持的两种了:
不过要注意一点:这种类似正则表达式的模式匹配是严格区分大小写的!