Maison > base de données > tutoriel mysql > Comment rechercher efficacement des éléments dans des tableaux JSON dans MySQL ?

Comment rechercher efficacement des éléments dans des tableaux JSON dans MySQL ?

Susan Sarandon
Libérer: 2024-11-29 11:59:09
original
358 Les gens l'ont consulté

How to Efficiently Search for Elements within JSON Arrays in MySQL?

Recherche de tableaux JSON dans MySQL

Supposons que vous ayez une table MySQL avec une colonne JSON nommée "data" contenant un tableau. Vous souhaitez récupérer toutes les lignes dont l'un des éléments du tableau est supérieur à 2.

La requête

SELECT * from my_table
WHERE JSON_EXTRACT(data, '$[*]') > 2;
Copier après la connexion

renvoie un résultat incorrect car elle est toujours évaluée à vrai, quelles que soient les valeurs du tableau .

Pour rechercher un entier dans un tableau :

JSON_CONTAINS('[1,2,3,4,5]','7','$')  # Returns: 0
JSON_CONTAINS('[1,2,3,4,5]','1','$')  # Returns: 1
Copier après la connexion

Pour rechercher une chaîne dans un array :

JSON_CONTAINS('["a","2","c","4","x"]','"x"','$')  # Returns: 1
JSON_CONTAINS('["1","2","3","4","5"]','"7"','$')  # Returns: 0
Copier après la connexion

Pour votre scénario, utilisez la requête :

SELECT * from my_table
WHERE JSON_CONTAINS(data, '2', '$');
Copier après la connexion

Cette requête sélectionne toutes les lignes où la colonne "data" contient un tableau avec un élément supérieur à 2.

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