Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL dan JSON - ubah array menjadi baris

Berikut adalah tiga cara untuk mengubah array Anda menjadi baris. Menggunakan nilai JSON yang diasumsikan sama:

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

Menggunakan tabel angka sebaris. Kompatibel dengan MySQL dan 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;

Menggunakan MySQL 8.0.4+ JSON_TABLE():

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

Menggunakan MariaDB SEQUENCE Engine untuk menyingkirkan tabel urutan sebaris:

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

Untuk membuat lebih umum di MariaDB, gunakan maks "tebakan terbaik" untuk panjang array lalu batasi urutan ke panjang JSON. Contoh ini mengasumsikan array terbesar akan memiliki 1024 elemen atau lebih sedikit:

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. Penggunaan CPU MySQL yang tinggi

  2. Bergabung dengan dua tabel serupa di MySQL

  3. Host server MySQL tidak dikenal

  4. Bagaimana saya bisa mendapatkan daftar lengkap semua kueri yang sedang berjalan di server MySQL saya?

  5. Bagaimana saya bisa membuat db mysql dengan penulisan Docker?