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