Mysql
 sql >> Base de données >  >> RDS >> Mysql

La colonne WHERE de la requête MySQL est dans le tableau json

Je pense que vous ne pouvez y parvenir que dans Mysql 5.7.

Dans la version 5.7, vous pouvez faire quelque chose comme :

SELECT JSON_EXTRACT(json_field, '$.name');

et il n'extrairea que la clé de nom de l'objet json.

Rechercher tous les éléments avec la balise "JavaScript" :

SELECT * FROM `table` WHERE JSON_CONTAINS(json_field, '["JavaScript"]');

Rechercher tous les éléments dont les balises commencent par "Java" :

SELECT * FROM `table` WHERE JSON_SEARCH(json_field, 'one', 'Java%') IS NOT NULL;

utilisez 'one' pour trouver la première correspondance ou 'all' pour trouver toutes les correspondances

Vous pouvez extraire le pseudo Twitter à l'aide d'un chemin JSON :

SELECT name, json_field->"$.twitter" AS `twitter` FROM `user`;

Vous pouvez également référencer un chemin JSON dans la clause WHERE pour renvoyer uniquement les utilisateurs avec un compte Twitter :

SELECT name, profile->"$.twitter" AS `twitter` FROM `user` WHERE profile->"$.twitter" IS NOT NULL;

Vous pouvez faire plus de choses comme :

  • Création de valeurs JSON

  • Normalisation, fusion et autowrapping des valeurs JSON

  • Rechercher et modifier des valeurs JSON

  • Comparaison et classement des valeurs JSON

  • Agrégation de valeurs JSON

pour plus d'informations, veuillez vous référer à :https://dev.mysql. com/doc/refman/5.7/en/json.html