gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:24:21 25 4
gpt4 key购买 nike

我有一个 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"}
]

我想从数组中获取 value 字段,该字段有一个名为 slugkey,这样当我进行选择查询时表,我从列中得到这个特定的值。对于上面的行,当我执行 select name, slug, price from table 时,我应该得到 med1, otc7087, 100 作为输出。我无法为这个东西建立查询。我可以获得所有键或所有值,但如何在同一个选择查询中选择一个特定的值?

或者只是如何从表中选择 slugs?那会回答。

最佳答案

我相信你的 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);

它会将 jsonb 转换为以键、值、显示名称作为列的表,然后您可以对其进行任何类型的查询,它也适用于提取键,而@Craig Ringer 建议您将无法转换的方式它像事物一样进入表并触发复杂的选择查询,如 not in , != , range queries , ilike 将非常困难并且性能可能较低。

关于postgresql - 如何仅从 Postgres 中的 jsonb 类型中选择特定键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33330856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com