sql >> Base de Datos >  >> RDS >> Mysql

MySQL selecciona dónde la propiedad del campo JSON tiene valor

Algunos ejemplos de cómo consultar un campo de tipo de datos 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;

Con mysql 5.7.9 +

También puede simplemente hacer esto (acceso directo para JSON_EXTRACT):

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

Es posible que observe que los resultados de sus datos json están "entrecomillados". Podría usar JSON_UNQUOTE, o podría usar esto, que es un atajo de JSON_EXTRACT y JSON_UNQUOTE:

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

Y para seleccionar datos desde dentro de subobjetos:

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

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