[英]MySQL searching JSON array for value, using `like` or regexp
我有一個名為data_json
的字段的表。
JSON 形狀的示例如下:
{
title: "My Title",
arr: ["hello there", "foobar", "foo hello bar"]
}
我只想使用regexp
或like
查找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.