itsource

json 필드를 여러 행으로 분할하는 방법

mycopycode 2022. 9. 30. 11:09
반응형

json 필드를 여러 행으로 분할하는 방법

1개 이상의 요소로 데이터를 저장할 수 있는 JSON 필드가 테이블에 있습니다(예: "{a: 1, b:2}").

MariaDB 쿼리를 생성하여 다음 결과를 가져오려면 어떻게 해야 합니까?

A          B          C
===========================
1          2          NULL
NULL       1          2

물론 "NULL" 값은 변경할 수 있지만 JSON 배열은 각 요소의 행으로 표시됩니다.

MySQL에 새로운 버전의 JSON_TABLE 기능이 있는 것으로 알고 있습니다.MariaDB에 상당하는 것을 찾고 있습니다.

몇 가지 조사를 한 결과, 많은 사람들이 미리 정의된 숫자(0~who_know)의 표를 사용하고 있는 것을 알 수 있었습니다.예를 들어, 1 ~200의 필드(n)가 1개 있는 숫자(분할 발생 횟수에 따라 다름)가 호출된 테이블입니다.

이를 작동시키는 조회는 다음과 같습니다.

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

언급URL : https://stackoverflow.com/questions/54061887/how-to-split-json-field-into-multi-rows

반응형