Maison > base de données > tutoriel mysql > Comment puis-je convertir des tableaux JSON en lignes et utiliser GROUP_CONCAT() dans MySQL ?

Comment puis-je convertir des tableaux JSON en lignes et utiliser GROUP_CONCAT() dans MySQL ?

Patricia Arquette
Libérer: 2024-11-26 06:39:10
original
880 Les gens l'ont consulté

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

Conversion de tableaux JSON en lignes dans MySQL

Introduction

Travailler avec des tableaux JSON dans MySQL nécessite une compréhension de ses fonctions de manipulation JSON. Cependant, un défi survient lors de la conversion de ces tableaux en lignes ou lors de l'exécution d'opérations telles que GROUP_CONCAT() sur eux. Cet article aborde de tels scénarios et propose des solutions utilisant la fonctionnalité JSON de MySQL.

Du tableau JSON aux lignes

Pour insérer une ligne pour chaque élément dans un tableau JSON, une approche consiste à extraire manuellement chaque élément à l'aide de JSON_EXTRACT() et à réunir les résultats ensemble. Cependant, une méthode plus propre consiste à utiliser la fonction JSON_TABLE de MySQL 8 :

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

Cela créera une table avec une colonne, « Valeur », contenant les éléments du tableau JSON.

GROUP_CONCAT() sur un tableau JSON

Pour concaténer les éléments d'un tableau JSON en un chaîne séparée par des virgules à l'aide de GROUP_CONCAT(), vous pouvez utiliser une combinaison de JSON_TABLE et GROUP_CONCAT() :

SELECT GROUP_CONCAT(Value)
     FROM
       JSON_TABLE(
         @j,
         "$[*]"
         COLUMNS(
           Value INT PATH "$"
         )
       ) data;
Copier après la connexion

JSON Splitting

Pour des scénarios similaires à STRING_SPLIT( ), comme la conversion d'une chaîne séparée par des virgules en lignes, vous pouvez exploiter JSON_TABLE en convertissant la chaîne en JSON array :

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

SELECT *
     FROM
       JSON_TABLE(
         CONCAT('["', REPLACE(@delimited, ',', '", "'), '"]'),
         "$[*]"
         COLUMNS(
           Value varchar(50) PATH "$"
         )
       ) data;
Copier après la connexion

Cela créera un tableau avec une colonne, "Valeur", contenant les éléments de la chaîne délimitée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal