目录

MySQL对JSON数据进行IN查询

目录

MySQL对JSON数据进行IN查询

SELECT
  字段名
FROM
  表名
WHERE
  CASE
    WHEN JSON_VALID(字段名) THEN JSON_UNQUOTE(字段名 -> '$.字段内JSON的键名称') IN (
      '查询条件',
      '查询条件2'
    )
    ELSE null
  END

注意点:

1.请根据具体业务情况替换代码的中文注释,并确认存储数据符合JSON格式。

2.MySQL5.7以下版本不支持JSON相关函数,如需按照单一条件 模糊查询 ,可以用

INSTR(要搜索的字符串,子字符串) 函数。

JSON_VALID 用于判断字段是否包含JSON格式数据,不包含数据时,若不使用该函数直接查询会报"Invalid JSON text in argument 1 to function json_extract"错误。

JSON_UNQUOTE 用于去除查询结果的双引号,也可用 REPLACE(要替换的字符串, ‘""’, ‘’) 进行替换。

字段名 -> ‘$.字段内JSON的键名称’

是 JSON_EXTRACT(字段名,’$.字段内JSON的键名称’) 的缩写,返回key对应的value。

6.JSON相关函数介绍推荐以下博客