0

我有一个表,其中有一个名为data_json.

JSON 形状的示例如下:

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

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

例如:

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

1 回答 1

0

需要提取数组的元素。要执行此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

于 2020-10-25T07:31:57.700 回答