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

MySQL sélectionne où la propriété de champ JSON a une valeur

Quelques exemples d'interrogation d'un champ de type de données json :

SELECT * FROM users WHERE JSON_EXTRACT(meta_data, "$.first_name") = 'bob';

SELECT * FROM users WHERE JSON_EXTRACT(meta_data, "$.age") IS NOT NULL;

SELECT * FROM users WHERE JSON_EXTRACT(meta_data, "$.accepted_policy") = true;

Avec mysql 5.7.9 +

Vous pouvez également faire ceci (raccourci pour JSON_EXTRACT) :

SELECT * FROM users WHERE meta_data->"$.first_name" = 'bob'

Vous remarquerez peut-être que vos résultats de données JSON sont "quotés". Vous pouvez utiliser JSON_UNQUOTE, ou vous pouvez utiliser ceci, qui est un raccourci de JSON_EXTRACT &JSON_UNQUOTE :

SELECT meta_data->>"$.first_name" FROM users WHERE meta_data->>"$.first_name" IS NOT NULL

Et pour sélectionner des données dans des sous-objets :

SELECT meta_data->>"$.address.tel" FROM users WHERE meta_data->>"$.address.street" = "123 Main St"

docs :https://dev.mysql.com /doc/refman/5.7/en/json-search-functions.html