【发布时间】:2018-08-03 20:03:17
【问题描述】:
这是我正在使用的:
创建表测试(id INT,数据 JSON); 插入测试值 (1, '[{"key": 2}, {"key": 1}]'), (2, '[{"key": 3}]'), (3, '[{"key": 1}]'); 从测试中选择 *; 从测试中选择 id 1 == ANY( json_array_elements(data) ->> 'key');我想要做的是选择所有行,其中data 列中的任何 json 对象的键 key 的值为 1。我试图提取行1 和3。请注意,我不确定ANY 子句之前的相等比较== 是否正确。
当我运行上述程序时,我收到以下错误:ERROR: set-returning functions are not allowed in WHERE
【问题讨论】:
-
您是绑定到数据类型
json还是jsonb是一个选项?表大和性能相关吗?请始终声明您的 Postgres 版本。 -
请参考这个类似的问题,了解为什么 ANY 不起作用 - stackoverflow.com/questions/21675174/…
-
在 SQL 中,比较运算符是
=修复它,它应该可以工作
标签: sql postgresql postgresql-json