经常用到特定查询,关于字符串的。一般我们经常用的就是like查询。这个用起来非常方便,也被大面积的应用。
mysql模糊查询like的用法查询user表中姓名中有“王”字的:select*fromuserwherenamelike%王%mysql模糊查询notlike的用法查询user表中姓名中没有“王”字的:select*fromuserwherenamenotlike%王%
mysql中精度查询instr
instr也是我们比较常见的方式,用于判断再某个字段中是否含有特定字符串,比如select*fromuserwhereinstr(address,上海)0这样就能把地址字段中所有含有上海的记录都找到;
mysql中精度查询之in
in常用于where表达式中,其作用是查询某个范围内的数据。
select*fromwherefieldin(value1,value2,value3,…)
notin与in作用相反,
用法和示例如下:
用法:select*fromwherefieldnotin(value1,value2,value3,…)。mysql中非常好用的find_in_set()MySQL手册中find_in_set函数的语法:FIND_IN_SET(str,strlist)str要查询的字符串strlist字段名参数以”,”分隔如(1,2,6,8)用法示例:有个文章表里面有个type字段,它存储的是文章类型,有1头条、2推荐、3热点、4图文等等。现在有篇文章他既是头条,又是热点,还是图文,type中以1,3,4的格式存储。那我们如何用sql查找所有type中有4的图文类型的文章呢??这就要我们的find_in_set出马的时候到了。以下为引用的内容:1select*fromarticlewhereFIND_IN_SET(4,type)select*fromtreenodeswhereFIND_IN_SET(id,1,2,3,4,5);select*fromtreenodeswhereidin(1,2,3,4,5);这两条查出来是一样的,但是,因为1,2,3,4,5是常量,如果是某个字段值这样的变量的话,in就不能正常运行了,只能用FIND_IN_SET这样的才可以,比如;select*fromtreenodeswhereFIND_IN_SET(id,list);find_in_set()和like的区别:在mysql中,有时我们在做数据库查询时,需要得到某字段中包含某个值的记录,但是它也不是用like能解决的,使用like可能查到我们不想要的记录,它比like更精准,这时候mysql的FIND_IN_SET函数就派上用场了,下面来看一个例子。INSERTINTOusers(name,limits)VALUES(小张,1,2,12);INSERTINTOusers(name,limits)VALUES(小王,11,22,32);SELECT*FROMusersWHERElimitsLIKE%2%;这样包含2的都出来了,结果并不精确;SELECT*FROMusersWHEREFIND_IN_SET(2,limits);只有2的被找出来了,结果精确;总结:like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果。