加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 如何在Postgres中仅从jsonb类型中选择特定键的值

发布时间:2020-12-13 16:03:33 所属栏目:百科 来源:网络整理
导读:我有一个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"},{"ke
我有一个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

对于前:

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将是非常困难,可能性能较差.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读