我有一个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", "value": "", "display_name": "Details"},
{"key": "slug", "value": "otc7087", "display_name": "Slug"}
]
Run Code Online (Sandbox Code Playgroud)
我想value从具有key被调用的数组中获取字段slug,这样当我对表执行select查询时,我从列中获取此特定值.对于上面这行select name, slug, price from table,我应该得到med1, otc7087, 100输出.我无法为此事构建查询.我可以获取所有键或所有值,但如何在同一个选择查询中选择特定键?
或者我只是如何slugs从表中选择?那会回答.
小智 6
我相信你的json更有条理,只需尝试jsonb_to_recordset
对于前:
select * from json_to_recordset('[
{"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", "value": "", "display_name": "Details"},
{"key": "slug", "value": "otc7087", "display_name": "Slug"}
]') as x(key int, value text, display_name text);
Run Code Online (Sandbox Code Playgroud)
它会将jsonb转换为带有key,value,display_name作为列的表,然后你可以触发任何类型的查询,它也适用于提取键,而@Craig Ringer建议你不能将它转换成表喜欢的事情和解雇复杂的选择查询,如不在,!=,范围查询,ilike将是非常困难,可能性能较差.
| 归档时间: |
|
| 查看次数: |
5660 次 |
| 最近记录: |