Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL i JSON - przekształć tablicę w wiersze

Oto trzy sposoby konwersji tablicy na wiersze. Używając tej samej przyjętej wartości JSON:

SET @j = '[10, 20, {"a": "bbb"}]';

Korzystanie z wbudowanej tabeli liczb. Kompatybilny z MySQL i MariaDB:

WITH sequenceGenerator (sequenceNumber) AS (
    SELECT 0 AS sequenceNumber
    UNION ALL
    SELECT 1
    UNION ALL
    SELECT 2
)
SELECT
    JSON_EXTRACT(@j, CONCAT('$[', sequenceNumber, ']')) AS arrayValue
FROM
    sequenceGenerator;

Korzystanie z MySQL 8.0.4+ JSON_TABLE():

SELECT
    arrayValue
FROM
    JSON_TABLE(
        @j,
         '$[*]'
        COLUMNS(
            arrayValue JSON PATH '$')
    ) AS tt;

Używanie MariaDB SEQUENCE Engine, aby pozbyć się wbudowanej tabeli sekwencji:

SELECT
    JSON_EXTRACT(@j, CONCAT('$[', seq, ']')) AS arrayValue
FROM
    seq_0_to_2;

Aby uczynić bardziej ogólną w MariaDB, użyj maksymalnej wartości „najlepszego przypuszczenia” dla długości tablicy, a następnie ogranicz sekwencję do długości JSON. W tym przykładzie założono, że największa tablica będzie miała 1024 lub mniej elementów:

SELECT
    JSON_EXTRACT(@j, CONCAT('$[', seq, ']')) AS arrayValue
FROM
    seq_0_to_1024 AS sequenceTable
WHERE
    sequenceTable.seq < JSON_LENGTH(@j);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyświetlanie listy administratorów Django + klucz obcy =pusta lista zmian

  2. Błąd podczas używania z wyjątkiem w zapytaniu

  3. Najszybszy sposób na wstawienie 134675 wartości do zdalnej bazy danych

  4. MySQL — rekursywna struktura drzewa

  5. Zlokalizuj pozycję tekstu, wyodrębnij tekst i wstaw w nowej kolumnie w MySQL