Maison  >  Article  >  base de données  >  Comment trouver une valeur spécifique dans un tableau JSON dans MySQL ?

Comment trouver une valeur spécifique dans un tableau JSON dans MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 08:24:03182parcourir

How to Find a Specific Value within a JSON Array in MySQL?

MySQL : Rechercher une valeur de clé spécifique dans un tableau

Dans MySQL, vous pouvez rencontrer des scénarios dans lesquels vous souhaitez récupérer une valeur spécifique à partir de un tableau d'objets JSON. À l'aide de la fonction JSON_SEARCH, vous pouvez récupérer le chemin d'accès au nœud souhaité. Cependant, combiner cela avec la sélection d'un élément de tableau spécifique peut être un défi.

Solution : Fonction JSON_TABLE

MySQL 8.0 fournit la fonction JSON_TABLE, qui transforme un JSON document dans une table dérivée virtuelle, semblable aux lignes et colonnes conventionnelles. Cela vous permet d'effectuer des opérations de sélection et de projection sur les données JSON.

Considérez l'exemple de tableau JSON suivant :

<code class="json">[
    {"Race": "Orc", "strength": 14},
    {"Race": "Knight", "strength": 7}
]</code>

Pour trouver la force du chevalier, vous pouvez utiliser la requête suivante :

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

Limitations et considérations

  • La fonction JSON_TABLE nécessite une spécification explicite des attributs, ce qui peut ne pas être pratique si les attributs sont inconnus.
  • Définir une vue à l'aide de JSON_TABLE peut atténuer le caractère répétitif de la création de cette table dérivée.
  • Envisagez la normalisation des données JSON complexes afin de simplifier et d'optimiser les requêtes.

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