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

Comment puis-je extraire efficacement des lignes de tableaux JSON dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-08 17:18:12565parcourir

How Can I Efficiently Extract Rows from JSON Arrays in MySQL?

Extraction de lignes à partir de tableaux JSON dans MySQL

MySQL 5.7 introduit de puissantes fonctions JSON, permettant une manipulation transparente des données JSON. Cependant, extraire des éléments de tableau JSON en lignes s'est avéré difficile.

Le problème

La transformation de tableaux JSON en une structure basée sur des lignes reste un obstacle dans MySQL. Les options sont limitées à l'extraction manuelle d'éléments individuels à l'aide de JSON_EXTRACT() ou à l'union de plusieurs requêtes. Cette approche est lourde et sujette aux erreurs.

La solution : MySQL 8 et JSON_TABLE

MySQL 8 introduit JSON_TABLE, une solution complète pour travailler avec des données JSON. Il permet la conversion directe de tableaux JSON en lignes de tableau.

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

Utiliser JSON_TABLE comme séparateur universel

En plus de l'extraction de lignes, JSON_TABLE peut servir de séparateur polyvalent séparateur de chaînes, une fonctionnalité manquante dans MySQL. En convertissant une chaîne délimitée en JSON, il devient possible de séparer facilement ses composants.

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

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

Conclusion

JSON_TABLE offre aux utilisateurs de MySQL une approche simplifiée de la conversion de JSON. tableaux en lignes, éliminant ainsi le besoin d’unions complexes ou d’extraction manuelle. Il sert également d'outil pratique de fractionnement de chaînes, comblant une lacune notable dans les fonctionnalités de MySQL.

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