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);