-
博文分类专栏
- Jquery基础教程
-
- 文章:(15)篇
- 阅读:46654
- shell命令
-
- 文章:(42)篇
- 阅读:154549
- Git教程
-
- 文章:(36)篇
- 阅读:235267
- leetCode刷题
-
- 文章:(76)篇
- 阅读:132502
-
sql语句中的通配符2018-03-17 19:13 阅读(6475) 评论(0)
一、简介
mysql中常用的通配符有:
通配符 解释 % 匹配一个或多个字符 _ 匹配一个字符 [string] 匹配string中任意一个字符 [^string] 不匹配string中任意一个字符 [!string] 不匹配string中任意一个字符 二、"%"的使用
在mysql的查询或是授权的时候,我们通常会用到mysql的通配符。
有一个分类表category如下:
取出所有test开头的分类,则需要使用通配符%
select * from category name 'test%';
二、"_"的使用
比如查询test1_0开头,后面跟着一个字符的分类,查询语句如下:
select * from category where name like "test1_0_";
备注:在like语句里面,不能随便使用 _,如果数据表中存在如下记录,上诉查询就会失败,如下:
INSERT INTO category (`name`)VALUES('test1a0b');
在执行上诉查询,结果为:
怎么解决这个问题,只能转移字符串中的“_”字符,如果涉及到匹配查询,其次名字的分隔符尽量不要使用下划线"_"。上面查询语句,可以改为:
select * from category where name like "test1\_0_";
三、正则匹配
如果在上面表中,再插入如下记录
INSERT INTO category (`name`)VALUES('test1_0a');
再次进行上诉查询,会返回
如果,我仅仅需要以数字结尾的分类,那么上面的查询语句就不能满足条件。这个时候,就需要使用正则匹配了。
select * from category where name REGEXP "test1_0[1-9]";
mysql的正则表达式,和其他语言差不多,常用的字符如下:
. 匹配任何单个的字符
[abc] 匹配abc中任意一个字符
[a-z] 匹配任何小写字母
[A-Z] 匹配任何大写字母
[0-9] 匹配任何数字
^test代表以某个test开头
test$ 代表以test结