我在一个表中有一个JSON字段,其中的数据可能存储为一个或多个元素(即“ [[a:1,b:2}]”或“ [{a:1,b:2} ,{b:1,c:2}]“)。
如何生成MariaDB查询以导致以下结果:
A B C
===========================
1 2 NULL
NULL 1 2
当然可以更改“ NULL”值,但其思想是将JSON数组显示为每个元素的行。
我知道MySQL在新版本中具有JSON_TABLE功能,我正在寻找与MariaDB等效的功能。
答案 0 :(得分:1)
经过一些研究,我注意到很多人使用带有预定义数字的表(0到who_knows)。例如,一个称为数字的表,其中一个字段(n)从1到200(取决于可能发生的拆分次数)。
使其生效的查询如下:
假设rawData是一个JSON字符串,具有“事件”作为您要拆分为行的json数组。
SELECT
logEvent, JSON_EXTRACT(logEvent, "$.author_name"), JSON_EXTRACT(logEvent, "$.text")
FROM
(
SELECT
JSON_EXTRACT(
rawData,
CONCAT('$.events[', num.n, ']')
) AS logEvent
FROM
numbers num
INNER JOIN logsRaw
) AS a