Maison >base de données >tutoriel mysql >Comment récupérer efficacement des données JSON spécifiques à partir de MySQL ?

Comment récupérer efficacement des données JSON spécifiques à partir de MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-24 00:52:15557parcourir

How to Efficiently Retrieve Specific JSON Data from MySQL?

Récupération de données JSON à partir de MySQL

MySQL fournit un moyen pratique de rechercher et d'extraire des informations spécifiques à partir des données JSON stockées dans sa base de données. Voici comment effectuer une telle recherche :

MySQL version 5.7 et supérieure

Si vous utilisez MySQL version 5.7 ou ultérieure, vous pouvez utiliser la fonction JSON_EXTRACT. Cette fonction vous permet d'extraire une valeur spécifique d'une chaîne JSON. Pour rechercher une valeur particulière dans le champ attribs_json, vous pouvez utiliser une requête comme celle-ci :

SELECT JSON_EXTRACT(attribs_json, '$.feature."1".value') AS feature_value
FROM products
WHERE JSON_EXTRACT(attribs_json, '$.feature."1".value') REGEXP '^[^""3"$]'

Cette requête sélectionnera la valeur de la clé "value" dans la clé "1" de la "fonctionnalité " dans le champ attribs_json pour tous les produits qui n'ont pas "3" comme valeur.

MySQL antérieur Versions

Pour les versions antérieures de MySQL, vous pouvez utiliser des expressions régulières avec l'opérateur REGEXP pour rechercher un modèle dans la chaîne JSON. Cependant, cette approche est plus complexe et nécessite une analyse de chaînes plus intensive.

Exemple de requête

Considérez la structure JSON suivante :

{
  "feature": {
    "1": { "value": "[\"2\",\"3\"]" },
    "2": { "value": "[\"1\"]" },
    "3": { "value": "[\"1\"]" }
  }
}

Pour recherchez la clé "1" avec une valeur qui n'est pas "3", vous pouvez utiliser ce qui suit requête :

SELECT id, attribs_json
FROM products
WHERE attribs_json REGEXP '"1":{.*"value":"[^"3"$]$'

Remarque importante

Lorsque vous utilisez des expressions régulières, n'oubliez pas d'échapper les caractères spéciaux dans votre modèle de recherche pour éviter les correspondances involontaires. De plus, la syntaxe de JSON_EXTRACT et REGEXP peut varier légèrement en fonction de la version spécifique de MySQL que vous utilisez.

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