Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL wählt aus, wo die JSON-Feldeigenschaft einen Wert hat

Einige Beispiele für die Abfrage eines JSON-Datentypfelds:

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;

Mit mysql 5.7.9 +

Sie können dies auch einfach tun (Verknüpfung für JSON_EXTRACT):

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

Möglicherweise stellen Sie fest, dass Ihre JSON-Datenergebnisse "zitiert" werden. Sie könnten JSON_UNQUOTE verwenden, oder Sie könnten dies verwenden, was eine Abkürzung von JSON_EXTRACT &JSON_UNQUOTE ist:

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

Und um Daten aus Unterobjekten auszuwählen:

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