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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL查询某个字段包含某个值--FIND_IN_SET相关的知识,希望对你有一定的参考价值。

参考技术A 文章中有标签字段(label),存的是标签ID字符串。

现在想在文章列表进行筛选,根据标签筛选出对应标签的文章
但是不能用like。SO,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)

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

查询数据库中指定字段中存储的json数据是不是包含某个值

参考技术A 正常来说,使用mysql的JSON_EXTRACT()处理函数就可以了,例如:

SELECT JSON_EXTRACT('"id":"3"', "$.id")

;可以查询出id字段中包含id为3的,但是会有一个问题,当mysql的使用工具navicat版本过低时,不支持转码或者查询,会报错,这是需要在JSON_EXTRACT外面套一层JSON_UNQUOTE 即可正常使用,语句如下:

SELECT JSON_UNQUOTE(JSON_EXTRACT('"id":"3"', "$.id"));

以上是关于MySQL查询某个字段包含某个值--FIND_IN_SET的主要内容,如果未能解决你的问题,请参考以下文章

mysql 查询不包含

查询数据库中指定字段中存储的json数据是不是包含某个值

sql 如何判断表中的某个字段是不是有某个值

求助啊,tp下,mongodb如何查询后只返回某个字段值

SQL语句 替换某个字段中的某个值

如何SQL查询字段值包含于字符串