Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL seleciona onde a propriedade do campo JSON tem valor


Alguns exemplos de como consultar um campo de tipo de dados 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;

Com mysql 5.7.9 +

Você também pode fazer isso (atalho para JSON_EXTRACT):
SELECT * FROM users WHERE meta_data->"$.first_name" = 'bob'

Você pode notar que seus resultados de dados json são "citados". Você pode usar JSON_UNQUOTE ou pode usar isso, que é um atalho de JSON_EXTRACT &JSON_UNQUOTE:
SELECT meta_data->>"$.first_name" FROM users WHERE meta_data->>"$.first_name" IS NOT NULL

E para selecionar dados de dentro de subobjetos:
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