选择查询>;=postgresql中的jsonb列值

选择查询>;=postgresql中的jsonb列值,sql,json,postgresql,postgresql-9.5,Sql,Json,Postgresql,Postgresql 9.5,我有一个postgres数据库,表中有jsonbformat列tags。我试图查询置信度>=50的行 我不确定如何索引到预测列表中以检查信心。我尝试了下面的查询,它执行时没有错误,但没有返回任何行 从mytable中选择*,其中(标记->>'confidence')::int>=50 下面是一个示例行jsonb { "predictions": [ { "label": "Shopping", "confidence": 9

我有一个postgres数据库,表中有
jsonb
format列
tags
。我试图查询
置信度>=50的行

我不确定如何索引到预测列表中以检查信心。我尝试了下面的查询,它执行时没有错误,但没有返回任何行

从mytable中选择*,其中(标记->>'confidence')::int>=50

下面是一个示例行jsonb

{
    "predictions": [
        {
            "label": "Shopping",
            "confidence": 91
        },
        {
            "label": "Entertainment",
            "confidence": 4
        },
        {
            "label": "Events",
            "confidence": 2
        }
    ]
}

您需要通过取消嵌套数组来规范化数据,然后

select p.d
from mytable mt
  cross join lateral jsonb_array_elements(mt.tags -> 'predictions') as p(d)
where (p.d ->> 'confidence')::int >= 50;
对于上述示例数据,返回:

{"label": "Shopping", "confidence": 91}

联机示例:

您需要通过取消嵌套数组来规范化数据,然后您可以

select p.d
from mytable mt
  cross join lateral jsonb_array_elements(mt.tags -> 'predictions') as p(d)
where (p.d ->> 'confidence')::int >= 50;
对于上述示例数据,返回:

{"label": "Shopping", "confidence": 91}

联机示例:

谢谢,但不确定如何取消阵列的测试。我应该做什么:
从mytable mt交叉连接横向jsonb_数组_元素(unnest(mt.tags)->“predictions”)中选择p.d作为p(d),其中(p.d->“confidence”)::int>=50。抱歉,我是pgsql新手。
jsonb_array_elements
运行您提供的查询时,unnestinghmm没有得到任何结果。不确定我做错了什么:/Thank,但不确定如何取消阵列的测试。我应该做什么:
从mytable mt交叉连接横向jsonb_数组_元素(unnest(mt.tags)->“predictions”)中选择p.d作为p(d),其中(p.d->“confidence”)::int>=50。抱歉,我是pgsql新手。
jsonb_array_elements
运行您提供的查询时,unnestinghmm没有得到任何结果。不确定我做错了什么:/