我有一个jsonb列,其数据如下.
[ {"key": "unit_type","value": "Tablet","display_name": "Unit Type"},{"key": "pack_type","value": "Packet","display_name": "Pack Type"},{"key": "units_in_pack","value": "60","display_name": "Units in Pack"},{"key": "item_unit","value": "","display_name": "Item unit"},{"key": "item_size","value": "1","display_name": "Item Size"},{"key": "details","display_name": "Details"},{"key": "slug","value": "otc7087","display_name": "Slug"} ]
我想从数组中获取一个名为slug的键的值字段,这样当我对表执行select查询时,我会从列中获取此特定值.对于上面的行,当我从表中选择名称,slug,price时,我应该得到med1,otc7087,100作为输出.我无法为此事构建查询.我可以获取所有键或所有值,但如何在同一个选择查询中选择特定键?
或者我只是如何选择表格中的slu ???那会回答.
解决方法
我相信你的json更有条理,
只需尝试jsonb_to_recordset
只需尝试jsonb_to_recordset
对于前:
select * from json_to_recordset('[ {"key": "unit_type","display_name": "Slug"} ]') as x(key int,value text,display_name text);
它会将jsonb转换为带有key,value,display_name作为列的表,然后你可以触发任何类型的查询,它也适用于提取键,而@Craig Ringer建议你不能将它转换成表喜欢的事情和解雇复杂的选择查询,如不在,!=,范围查询,ilike将是非常困难,可能性能较差.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。