繁体   English   中英

在PostgreSQL中选择查询> = jsonb列值

[英]select query for >= jsonb column value in postgresql

我有一个在表中具有jsonb格式列tags的postgres数据库。 我正在尝试查询confidence >= 50

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

select * from mytable where (tags->>'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}

在线示例: http : //rextester.com/CBIAR76462

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM