最近升级到使用PostgreSQL 9.3.1来利用JSON功能。在我的表中,我有一个json类型列,其结构如下:
{ "id": "123", "name": "foo", "emails":[ { "id": "123", "address": "somethinghere" }, { "id": "456", "address": "soemthing" } ] }
就问题而言,这只是伪数据。
是否可以根据id在emails数组中查询特定项目? 差不多:“返回电子邮件,其中id = 123)”?
是的,这是可能的:
SELECT * FROM tbl t, json_array_elements(t.json_col->'emails') AS elem WHERE elem->>'id' = 123;
tbl是您的表名,json_col是JSON列的名称。
tbl
json_col