经常用到特定查询,关于字符串的。一般我们经常用的就是like查询。这个用起来非常方便,也被大面积的应用。
mysql模糊查询like的用法查询user表中姓名中有“王”字的:select * from user where name like '%王%'mysql模糊查询not like的用法查询user表中姓名中没有“王”字的:select * from user where name not like '%王%'
mysql中 精度查询instr
instr也是我们比较常见的方式,用于判断再某个字段中是否含有特定字符串,比如 select * from user where instr(address,'上海')>0 这样就能把地址字段中所有含有上海的记录都找到;
mysql中精度查询之in
in常用于where表达式中,其作用是查询某个范围内的数据。
select * from where field in (value1,value2,value3,…)
not in与in作用相反,
用法和示例如下:
用法:select * from where field not in (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*from article where FIND_IN_SET('4',type)select * from treenodes where FIND_IN_SET(id,'1,2,3,4,5');select * from treenodes where id in(1,2,3,4,5);这两条查出来是一样的,但是,因为'1,2,3,4,5' 是常量,如果是某个字段值这样的变量的话,in就不能正常运行了,只能用 FIND_IN_SET这样的才可以,比如;select * from treenodes where FIND_IN_SET(id,list);find_in_set()和like的区别:在mysql中,有时我们在做数据库查询时,需要得到某字段中包含某个值的记录,但是它也不是用like能解决的,使用like可能查到我们不想要的记录,它比like更精准,这时候mysql的FIND_IN_SET函数就派上用场了,下面来看一个例子。INSER TINTO users (name, limits) VALUES ('小张','1,2,12');INSER TINTO users (name, limits) VALUES ('小王','11,22,32');SELECT * FROM users WHERE limits LIKE '%2%'; 这样包含2的都出来了,结果并不精确;SELECT * FROM users WHERE FIND_IN_SET(2,limits); 只有2的被找出来了,结果精确;总结:like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果。
晒码姐
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4662/viewspace-3122042/ ,如需转载,请注明出处,否则将追究法律责任。