wen*_*nky 6 mysql mysql-python mariadb
如何在JSON列上应用WHERE子句以对具有两列(id Integer,attr JSON)的表执行SELECT查询.JSON是嵌套的,在过滤条件中,只允许有一个json键值对.这个关键值对可以在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}}
+----+-----------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
mar*_*sjm 12
在MariaDB 10.2中,您可以使用JSON函数.
例如,如果要从数据库中选择所有甜甜圈,则执行以下操作:
SELECT * FROM t WHERE JSON_CONTAINS(attr, '"donut"', '$.type');
Run Code Online (Sandbox Code Playgroud)
注意:在MariaDB中,JSON函数适用于所有文本数据类型(VARCHAR,TEXT等).该JSON类型只是一个别名LONGTEXT.
与markusjm 的回答类似,您可以直接从 json by 字段中进行选择,例如:
SELECT json_extract(attr, '$.type') FROM t;
Run Code Online (Sandbox Code Playgroud)