我有一个表,它有一个名为warnings的列。两行的列值如下所示

                             warnings
-------------------------------------------------------------------
 {"isNew":false,"fieldWarnings":[],"dupId":null,"conflictIds":[]}
 {"isNew":false,"fieldWarnings":[],"dupId":3763,"conflictId":null}

我想要一个sql语句,它将选择顶行而不是底行。我尝试了这个sql查询,但它同时选择了两行
select warnings from table where cast(warnings->>'dubId' AS TEXT) is null;

最佳答案

查询中有dubId,但JSON属性是dupId。我想你只是有个打字错误!
请改为:

select warnings from table where cast(warnings->>'dupId' AS TEXT) is null;

此外,->>运算符将字段值作为文本返回,因此您不需要转换:
select warnings from table where warnings->>'dupId' is null;

关于json - Postgres选择JSON字段不为空的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22303147/

10-13 06:21