Heim >Datenbank >MySQL-Tutorial >Wie kann ich JSON-Arrays in Zeilen konvertieren und GROUP_CONCAT() in MySQL verwenden?

Wie kann ich JSON-Arrays in Zeilen konvertieren und GROUP_CONCAT() in MySQL verwenden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-26 06:39:10904Durchsuche

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

Konvertierung von JSON-Arrays in Zeilen in MySQL

Einführung

Arbeiten mit JSON-Arrays in MySQL erfordert ein Verständnis seiner JSON-Manipulationsfunktionen. Allerdings entsteht eine Herausforderung, wenn diese Arrays in Zeilen konvertiert oder Operationen wie GROUP_CONCAT() auf ihnen ausgeführt werden. Dieser Artikel befasst sich mit solchen Szenarien und bietet Lösungen unter Verwendung der JSON-Funktionalität von MySQL.

Vom JSON-Array zu Zeilen

Um für jedes Element in einem JSON-Array eine Zeile einzufügen, gibt es einen Ansatz besteht darin, jedes Element manuell mit JSON_EXTRACT() zu extrahieren und die Ergebnisse zusammenzuführen. Eine sauberere Methode ist jedoch die Verwendung der JSON_TABLE-Funktion von MySQL 8:

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

Dadurch wird eine Tabelle mit einer Spalte, „Wert“, erstellt, die die Elemente des JSON-Arrays enthält.

GROUP_CONCAT() auf JSON-Array

Um die Elemente eines JSON-Arrays zu einem zu verketten Durch Kommas getrennte Zeichenfolge mit GROUP_CONCAT() können Sie eine Kombination aus JSON_TABLE und GROUP_CONCAT() verwenden:

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

JSON-Aufteilung

Für Szenarien ähnlich wie STRING_SPLIT( ), wie zum Beispiel das Konvertieren einer durch Kommas getrennten Zeichenfolge in Zeilen, können Sie JSON_TABLE nutzen, indem Sie die Zeichenfolge in a konvertieren JSON-Array:

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

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

Dadurch wird eine Tabelle mit einer Spalte „Wert“ erstellt, die die Elemente der durch Trennzeichen getrennten Zeichenfolge enthält.

Das obige ist der detaillierte Inhalt vonWie kann ich JSON-Arrays in Zeilen konvertieren und GROUP_CONCAT() in MySQL verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn