我是Postgres的新手,所以如果这是新手问题,请重定向我。我正在尝试检索值大于0的所有行。

这是我的表test

id | value
-----------
1  |  {'a':1, 'b':2}
2  |  {'a':0, 'b':2}
3  |  {'a':1, 'b':1}
4  |  {'a':0, 'b':0}
5  |  {'a':3, 'b':1}
6  |  {'a':0, 'b':2}

我尝试过
SELECT * FROM test where value --> 'a' > 0;

但这没用。我刚得到
ERROR: argument of WHERE must be type boolean, not type jsonb

最佳答案

--表示注释,因此注释之后的所有内容都会被忽略。您的查询有效:

SELECT * FROM test where value

这使错误变得非常清楚。似乎您打算使用->>运算符从JSONB列中提取元素。但是请注意,它将返回一个文本值,您需要自己将其转换为int:
SELECT * FROM test WHERE (value->>'a')::int > 0

关于sql - 如何在postgres中检索所有其中jsonb键值大于int值的行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46163189/

10-13 03:17