【发布时间】:2016-05-01 07:26:32
【问题描述】:
我无法从 Postgres 9.5 中 JSONB 字段内的属性中选择非空值
SELECT data->>'property' FROM mytable WHERE data->>'property' IS NOT NULL;
我也尝试过使用 NOTNULL。
当我运行其中任何一个时,我都会收到错误 42883。 “错误:运算符不存在。JSONB->>布尔提示:没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。”
【问题讨论】:
-
你确定你不使用 9.4 吗?在 9.4 中,
->>运算符的优先级低于IS [NOT] NULL(因此您的查询被解析为data ->> ('property' IS NOT NULL))。我现在没有要测试的 9.5 实例,但似乎(来自@Patrick 的回答)这可能是 9.5 中引入的改进。在 9.4 中,最简单的解决方法是使用括号:(data->>'property') IS NOT NULL。
标签: postgresql jsonb