JSONデータ型フィールド内のプロパティにWHEREを持つ基本的なMySQLクエリを作成する方法は? SOのjsonフィールドの基本的なwhere句qが表示されません。
このようなものですが、もちろんこれらは機能しません:
SELECT * from my_table where meta_data->name = 'bob';
SELECT * from my_table where meta_data[name] IS NOT NULL;
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;
mysql 5.7.9の場合+
また、これを行うこともできます(JSON_EXTRACTのショートカット):
SELECT * FROM users WHERE meta_data->"$.first_name" = 'bob'
JSONデータの結果が「引用」されていることに気付くかもしれません。 JSON_UNQUOTEを使用することも、これを使用することもできます。これはJSON_EXTRACTとJSON_UNQUOTEのショートカットです。
SELECT meta_data->>"$.first_name" FROM users WHERE meta_data->>"$.first_name" IS NOT NULL
そして、サブオブジェクト内からデータを選択するには:
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