簡體   English   中英

MySQL 使用“like”或正則表達式搜索 JSON 數組的值

[英]MySQL searching JSON array for value, using `like` or regexp

我有一個名為data_json的字段的表。

JSON 形狀的示例如下:

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

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

例如:

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

需要提取數組的元素。 要執行此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%'

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM