个人学习记录——MySQL的模糊查询

模糊查询实质上是用利用数据库SQL语言的模糊搜索,如‘like’,通配符‘%’,‘_’。

但我后来了解到还有‘[]’和'[^]'的用法,特此记录

1“%”表示0个或多个字符

Select * from 表名 where 列名 like '%' //查询出全部数据 

Select * from 表名 where 列名 like 'x' //完全匹配

Select * from 表名 where 列名 like '%x' //最右为x,前面可以有任意位字符  

Select * from 表名 where 列名 like 'x%' //最右为x,后面可以有任意位字符  

Select * from 表名 where 列名 like '%x%' //中间为x,左右都可以有任意位字符

比如

我们可以通过第三行代码查出“abx”、“x”、“ax”但不能查出“xa”、“axy”

我们可以通过第四行代码查出“xab”、“x”、“xa”但不能查出“ax”、“axy”

我们可以通过第五行代码查出“xa”、“x”、“ax”、“axy”但不能查出“abc”

2“_”表示一个字符

Select * from 表名 where 列名 like '_恺' //最右为“恺”,前面有一位字符 

Select * from 表名 where 列名 like '__恺'  //最右为“恺”,前面有两位字符  

Select * from 表名 where 列名 like '_恺_'  //中间为“恺”,前后各有一位字符

比如

我们可以通过第一行代码查出姓名为两个字且最后一个字为恺的数据

我们可以通过第二行代码查出姓名为三个字且最后一个字为恺的数据

我们可以通过第三行代码查出姓名为三个字且中间那个字为恺的数据

3"[]"

表示括号内所列字符中的一个指定一个字符,字符串或者范围,要求所匹配对象是他们中的任意一个

注:如 [ ] 内有一系列字符( 01234、abcde 之类的)则可略写为“0-4”、“a-e”

Select * from 表名 where 列名 like '[张李王]三' //将找出“张三”,“李三”,“王三”(而不是“张李王三”) 

Select * from 表名 where 列名 like  '老[1-9]' //将找出“老1”,“老2”,……,“老9”

4"[^]"

表示不在括号列中的單个字符

其取值与[]相同,但它要求所匹配对象为指定字符以外的任一字符

Select * from 表名 where 列名 like '[^张李王]三' //将找出不姓“张”,“李”,“王”的“赵三”,“孙三”等

Select * from 表名 where 列名 like '老[^1-4]'  //将排除“老1”到“老4”,尋找“老5”,“老6”、…… 

5特殊字符的模糊查询当要查询的字符串包含通配符的時候,可以采用下面的方法來查询

用[ ]将特殊字符包含:

select * from 表名 where 列名 like '_[%]_'

用\将特殊字符转义:

select * from 表名 where 列名 like '_\%_'

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值