web-dev-qa-db-ja.com

mysql / mariaDBのJSON列でSELECTを実行する方法

jSON列にWHERE句を適用して、2つの列(id Integer、attr JSON)を持つテーブルでSELECTクエリを実行する方法。 JSONはネストされ、フィルター条件では、jsonのキーと値のペアが1つのみ許可されます。このキーと値のペアは、Josnのどこにでも配置できます。

+----+-----------------------------------------------------------------
| id | attr                                                                                          
|
+----+-----------------------------------------------------------------
|  1 | {"id":"0001","type":"donut","name":"Cake","ppu":0.55}                                         
|
|  2 | {"id":"0002","type":"donut","name":"Cake","ppu":0.55,"batters":
       {"batter1":100,"batter2":200}} 
+----+-----------------------------------------------------------------
6
wenky

MariaDB 10.2では、 JSON関数 を使用できます。

たとえば、データベースからすべてのドーナツを選択するには、次のようにします。

SELECT * FROM t WHERE JSON_CONTAINS(attr, '"donut"', '$.type');

注:MariaDBでは、JSON関数はすべてのテキストデータタイプ(VARCHAR、TEXTなど)で動作します。 JSON タイプは、単にLONGTEXTのエイリアスです。

12
markusjm

Markusjmの答えと同様に、次のようなフィールドでjsonから直接選択できます:

SELECT json_extract(attr, '$.type') FROM t;
4
MarAvFe