Maison >base de données >tutoriel mysql >Comment puis-je convertir efficacement des tableaux JSON en lignes dans MySQL ?

Comment puis-je convertir efficacement des tableaux JSON en lignes dans MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-30 14:33:15272parcourir

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

Conversion de tableaux JSON en lignes dans MySQL

Dans MySQL 5.7, la manipulation JSON a été considérablement améliorée, offrant diverses fonctionnalités pour l'extraction et le traitement des données au sein des structures JSON. Cependant, l'opération inverse de conversion d'un tableau JSON en lignes n'a pas été simple.

Tableau JSON en lignes

Pour insérer une ligne pour chaque élément dans un tableau JSON , une approche manuelle utilisant plusieurs requêtes JSON_EXTRACT() était auparavant nécessaire. Mais avec l'introduction de la fonction JSON_TABLE dans MySQL 8, ce processus est devenu plus simple :

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

Tableau JSON en chaîne séparée par des virgules

Pour convertir un Tableau JSON dans une chaîne séparée par des virgules à l'aide de GROUP_CONCAT(), une astuce peut être employé :

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

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

Cette approche traite la chaîne délimitée comme une chaîne JSON, ce qui entraîne une chaîne convertie séparée par des virgules.

Fonction STRING_SPLIT manquante

Bien que MySQL ne dispose pas d'une fonction STRING_SPLIT() dédiée, la fonction JSON_TABLE peut servir de substitut au fractionnement opérations, décomposant efficacement une chaîne délimitée en ses composants.

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!

Déclaration:
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