Maison > base de données > tutoriel mysql > Comment extraire efficacement des valeurs de clé spécifiques des tableaux JSON dans MySQL ?

Comment extraire efficacement des valeurs de clé spécifiques des tableaux JSON dans MySQL ?

Susan Sarandon
Libérer: 2024-10-29 13:43:02
original
540 Les gens l'ont consulté

How to Efficiently Extract Specific Key Values from JSON Arrays in MySQL?

Trouver des valeurs de clé spécifiques dans un tableau JSON MySQL

Dans MySQL, trouver un nœud spécifique dans un tableau d'objets JSON peut être difficile. Pour résoudre ce problème, vous pouvez envisager d'utiliser les fonctions JSON_SEARCH et JSON_CONTAINS. Cependant, combiner ces fonctions pour simplifier la requête n'est pas toujours réalisable.

MySQL 8.0 propose une solution avec la fonction JSON_TABLE(), qui crée une table dérivée virtuelle à partir d'un document JSON, en la traitant efficacement comme des lignes et des colonnes. . Cela vous permet d'effectuer des opérations telles que la sélection et la projection sur les données JSON.

Pour démontrer, insérons vos exemples de données dans un tableau :

<code class="sql">create table mytable ( mycol json );

insert into mytable set mycol = '[{"Race": "Orc", "strength": 14}, {"Race": "Knight", "strength": 7}]';</code>
Copier après la connexion

Vous pouvez maintenant utiliser JSON_TABLE() pour créer une table virtuelle :

<code class="sql">SELECT j.*
FROM mytable,
JSON_TABLE(mycol, '$[*]' COLUMNS (
    race VARCHAR(10) PATH '$.Race',
    strength INT PATH '$.strength'
)) AS j;</code>
Copier après la connexion

Cela produira le résultat suivant :

race strength
Orc 14
Knight 7

Pour récupérer la force d'une race spécifique, vous pouvez utiliser une clause WHERE :

<code class="sql">SELECT j.strength
FROM mytable,
JSON_TABLE(mycol, '$[*]' COLUMNS (
    race VARCHAR(10) PATH '$.Race',
    strength INT PATH '$.strength'
)) AS j
WHERE j.race = 'Orc';</code>
Copier après la connexion

Cela renverra le résultat suivant :

strength
14

Cependant, cette approche vous oblige à spécifier les champs d'attributs dans votre requête, ce qui peut ne pas convenir aux ensembles de données avec des définitions d'attributs inconnues.

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