Как разбить поле JSON на несколько строк? - PullRequest
0 голосов
/ 06 января 2019

У меня есть поле 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 голосов
/ 07 января 2019

После некоторых исследований я заметил, что многие люди используют таблицу с предопределенными числами (от 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...