mysql中find_in_set()函数的使用

首先举个例子来说: 
有个文章表里面有个type字段,它存储的是文章类型,有 1头条、2推荐、3热点、4图文等等 。
现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储。那我们如何用sql查找所有type中有4的图文类型的文章呢?? 
这就要我们的 find_in_set 出马的时候到了。以下为引用的内容:

select * from article where FIND_IN_SET('4',type)

若想要查找type不等于4的图文类型的文章呢??

select * from article where !FIND_IN_SET('4',type)

 

上述的误区在于不能简单的用like或者not in去处理:

 其中limits表示用户所拥有的权限(以逗号分隔),现在想查询拥有权限编号为2的用户,如果用like关键字的话,则查询结果如下:

SELECT * FROM users WHERE limits LIKE '%2%';

这样第二条数据不具有权限'2'的用户也查出来了,不符合预期。下面利用mysql 函数find_in_set()来解决。

SELECT * FROM users WHERE FIND_IN_SET(2,limits);

 

 

感谢大佬https://www.cnblogs.com/lixinjun8080/p/11246632.html 提供的find_in_set()方法

和https://blog.csdn.net/weixin_38364109/article/details/93752974 提供的取反方法。

百度了很久发现这方面的案例较少,特此记录一下。

posted @ 2020-11-19 16:38  SI3  阅读(440)  评论(0编辑  收藏  举报