【发布时间】:2016-05-03 13:02:29
【问题描述】:
我正在使用 postgres 9.4 和 jsonb 类型。我有下表:
CREATE TABLE jsonb_test (iid serial NOT NULL, data jsonb)
以及该表中的以下json数据:
{"date": "2016-01-01T00:00:00.000Z", "items": [{"name": "bottles", "price": 12}, {"name": "caps", "price": 20}], "customer": {"name": "Customer 1", "email": "customer1@gmail.com"}}
{"date": "2015-12-01T00:00:00.000Z", "items": [{"name": "bottles", "price": 1}, {"name": "caps", "price": 50}], "customer": {"name": "Customer 2", "email": "customer2@gmail.com"}}
我想做的是获取所有商品价格大于 30 的行。在这种情况下,这将返回 Customer 2 行。
这是我目前的查询:
SELECT * FROM jsonb_test WHERE jsonb_array_elements(jsonb_extract_path(data, 'items')) #> '{price}' > '0'
但这会失败并出现错误ERROR: argument of WHERE must not return a set
谁能告诉我怎么做?是否可以对任意级别的嵌套执行此操作?
谢谢!
【问题讨论】:
-
@abarisone 我确实看到了,我不清楚如何做大于/小于操作。
标签: postgresql-9.4 jsonb