【问题标题】:MySQL searching JSON array for value, using `like` or regexpMySQL 使用 `like` 或 regexp 搜索 JSON 数组的值
【发布时间】:2020-10-25 03:36:29
【问题描述】:

我有一个表,其中有一个名为 data_json 的字段。

JSON 形状的示例如下:

{
  title: "My Title",
  arr: ["hello there", "foobar", "foo hello bar"]
}

我只想使用regexplike 查找data_json->'$.arr' 包含值的行。

例如:

select * from mytable where ??? like '%hello%';

【问题讨论】:

    标签: mysql sql json json-extract


    【解决方案1】:

    需要提取数组的元素。要执行此JSON_EXTRACT() 函数,可能会与索引值一起使用,直到它的长度。通过information_schema 的元数据表生成行的方法,如下所示,可用于生成这些索引值:

    SELECT value
      FROM 
      (
        SELECT  @i := @i + 1 AS rn,
               JSON_UNQUOTE(JSON_EXTRACT(data_json, CONCAT('$.arr[',@i-1,']'))) AS value              
          FROM information_schema.tables 
         CROSS JOIN mytable 
         CROSS JOIN (SELECT @i := 0) r
      ) q
     WHERE value LIKE '%hello%'
    

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 2011-04-09
      • 2013-05-27
      • 2016-11-22
      • 1970-01-01
      相关资源
      最近更新 更多