Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menukar Tatasusunan JSON kepada Baris dan Gunakan GROUP_CONCAT() dalam MySQL?

Bagaimanakah Saya Boleh Menukar Tatasusunan JSON kepada Baris dan Gunakan GROUP_CONCAT() dalam MySQL?

Patricia Arquette
Patricia Arquetteasal
2024-11-26 06:39:10834semak imbas

How Can I Convert JSON Arrays to Rows and Use GROUP_CONCAT() in MySQL?

Penukaran JSON Array ke Rows dalam MySQL

Pengenalan

Bekerja dengan tatasusunan JSON dalam MySQL memerlukan pemahaman tentang fungsi manipulasi JSONnya. Walau bagaimanapun, cabaran timbul apabila menukar tatasusunan ini kepada baris atau melaksanakan operasi seperti GROUP_CONCAT() padanya. Artikel ini menangani senario sedemikian dan menyediakan penyelesaian menggunakan fungsi JSON MySQL.

Dari JSON Array ke Rows

Untuk memasukkan baris bagi setiap elemen dalam tatasusunan JSON, satu pendekatan adalah untuk mengekstrak setiap elemen secara manual menggunakan JSON_EXTRACT() dan menggabungkan hasilnya bersama-sama. Walau bagaimanapun, kaedah yang lebih bersih ialah menggunakan fungsi JSON_TABLE MySQL 8:

SET @j = '[1, 2, 3]';
SELECT *
     FROM
       JSON_TABLE(
         @j,
         "$[*]"
         COLUMNS(
           Value INT PATH "$"
         )
       ) data;

Ini akan mencipta jadual dengan satu lajur, "Nilai," yang mengandungi elemen tatasusunan JSON.

GROUP_CONCAT() pada JSON Array

Untuk menggabungkan unsur-unsur Tatasusunan JSON ke dalam rentetan yang dipisahkan koma menggunakan GROUP_CONCAT(), anda boleh menggunakan gabungan JSON_TABLE dan GROUP_CONCAT():

SELECT GROUP_CONCAT(Value)
     FROM
       JSON_TABLE(
         @j,
         "$[*]"
         COLUMNS(
           Value INT PATH "$"
         )
       ) data;

JSON Splitting

Untuk senario serupa dengan STRING_SPLIT(), seperti menukar rentetan yang dipisahkan koma menjadi baris, anda boleh memanfaatkan JSON_TABLE dengan menukar rentetan kepada tatasusunan JSON:

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

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

Ini akan membuat jadual dengan satu lajur, "Nilai," yang mengandungi unsur rentetan yang dibataskan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Tatasusunan JSON kepada Baris dan Gunakan GROUP_CONCAT() 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