Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL seleziona dove ha valore la proprietà del campo JSON

Alcuni esempi di come eseguire query su un campo del tipo di dati 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+

Puoi anche farlo (scorciatoia per JSON_EXTRACT):

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

Potresti notare che i risultati dei tuoi dati json sono "quotati". Potresti usare JSON_UNQUOTE, oppure potresti usare questo, che è una scorciatoia di JSON_EXTRACT e JSON_UNQUOTE:

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

E per selezionare i dati dagli oggetti secondari:

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

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