MySQL查询某个字段包含某个值--FIND_IN_SET

情景:

文章中有标签字段(label),存的是标签ID字符串。


image.png

现在想在文章列表进行筛选,根据标签筛选出对应标签的文章
但是不能用like。SO,FIND_IN_SET函数就大显身手了

FIND_IN_SET

FIND_IN_SET(str,strlist)

str要查询的字符串
strlist字段名 参数以”,”分隔 如 (1,2,6,8,10,22)
查询字段(strlist)中包含(str)的结果,返回结果为null或记录

代码实现

倘若想搜索标签ID为2的文章:
SELECT id,label FROM dk_info where FIND_IN_SET ('2',label)

image.png

倘若想搜索标签ID为3的文章:
SELECT id,label FROM dk_info where FIND_IN_SET ('3',label)

image.png

tp5中使用

use think\Db;//tp5和tp6的差别
$condition[] = ['','exp',Db::raw("FIND_IN_SET('2',label)")];
$condition[] = ['','exp',Db::raw("FIND_IN_SET('3',label)")];

thinkphp6中使用

use think\facade\Db;//tp5和tp6的差别
        if($cid){
            $where[] = ['','exp',Db::raw("FIND_IN_SET($cid,cid)")];
        }
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容