Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh menukar tatasusunan JSON ke dalam baris dengan cekap dalam MySQL?

Bagaimanakah saya boleh menukar tatasusunan JSON ke dalam baris dengan cekap dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-11-30 14:33:15307semak imbas

How Can I Efficiently Convert JSON Arrays into Rows in MySQL?

Menukar Tatasusunan JSON kepada Baris dalam MySQL

Dalam MySQL 5.7, manipulasi JSON telah dipertingkatkan dengan hebat, menyediakan pelbagai fungsi untuk mengekstrak dan memproses data dalam struktur JSON. Walau bagaimanapun, operasi songsang untuk menukar tatasusunan JSON kepada baris tidak begitu mudah.

Tasusunan JSON kepada Baris

Untuk memasukkan baris bagi setiap elemen dalam tatasusunan JSON , pendekatan manual menggunakan berbilang pertanyaan JSON_EXTRACT() sebelum ini diperlukan. Tetapi dengan pengenalan fungsi JSON_TABLE dalam MySQL 8, proses ini telah menjadi lebih diselaraskan:

SELECT *
FROM JSON_TABLE([5, 6, 7], '$[*]'
COLUMNS(
  Value INT PATH '$'
));

JSON Array ke String yang dipisahkan koma

Untuk menukarkan Tatasusunan JSON ke dalam rentetan dipisahkan koma menggunakan GROUP_CONCAT(), silap mata boleh digunakan:

set @delimited = 'a,b,c';

SELECT *
FROM JSON_TABLE(
  CONCAT('["', REPLACE(@delimited, ',', '", "'), '"]'),
  '$[*]'
  COLUMNS(
    Value varchar(50) PATH '$'
  )
);

Pendekatan ini menganggap rentetan yang dibataskan sebagai rentetan JSON, menghasilkan rentetan dipisahkan koma yang ditukar.

Fungsi STRING_SPLIT hilang

Walaupun MySQL tidak mempunyai fungsi STRING_SPLIT() khusus, fungsi JSON_TABLE boleh berfungsi sebagai pengganti bagi operasi belah, dengan berkesan memecahkan rentetan yang dibataskan kepada komponennya.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menukar tatasusunan JSON ke dalam baris dengan cekap dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn