我是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/