选择查询>;=postgresql中的jsonb列值
我有一个postgres数据库,表中有选择查询>;=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
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没有得到任何结果。不确定我做错了什么:/