作为WHERE子句的一部分检查数组对象

短蜘蛛

我正在使用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": "[email protected]"}}
{"date": "2015-12-01T00:00:00.000Z", "items": [{"name": "bottles", "price": 1}, {"name": "caps", "price": 50}], "customer": {"name": "Customer 2", "email": "[email protected]"}}

我想做的是获取所有包含价格大于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

谁能告诉我该怎么做?是否可以针对任意级别的嵌套执行此操作?

谢谢!

杰希

尝试这样的事情:

SELECT * FROM jsonb_test, jsonb_array_elements(jsonb_test.data->'items') AS a WHERE (a->>'price') > '0'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何访问作为对象数组一部分的对象内的数组的值?

检查是否包含数组的一部分

将数组作为对象的一部分传递给Ajax调用

复制Java对象数组的一部分

Knex.js 子选择“in”子句作为连接的一部分

如何选择一个将数组作为其构造函数一部分的对象?

在作为对象一部分的每个数组元素上都有条件

如何遍历对象数组并将键值作为字符串的一部分返回

如何动态添加where子句的一部分?

SQL,如何通过SELECT,WHERE子句选择项目列表的一部分?

为什么条件函数中未使用where子句的一部分?

根据输入删除where子句的一部分

比较并数组化为对象数组,然后返回匹配对象的一部分

保存作为数组一部分的TypeScript数组

dplyr :: if_else-检查条件并插入NA作为评估的一部分

Bash,总是检查$ PWD作为路径的一部分吗?

Maven检查样式作为构建的一部分

检查数组是否是更大数组的一部分

如何创建作为数组中对象一部分的扁平数组数组,实质上是获取多个对象的子数组?

保留数组的第一个元素作为序列的一部分

PHP检查是否另一个数组的一部分

如何通过PHP在JSON添加@符号作为对象名的一部分

使用响应头作为 Retrofit 返回对象的一部分

粒子JS –调用作为对象一部分的函数

将对象作为ng-map标记的一部分传递

如何转义作为对象加载的 json 的一部分

使用参数作为对象属性链的一部分

Django序列化器输出作为JSON对象的一部分

摩卡柴:深层包含对象数组,但仅包含预期对象的一部分