如何将json字段拆分为多行?

时间:2019-01-06 13:17:55

标签: mariadb

我在一个表中有一个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等效的功能。

1 个答案:

答案 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