gpt4 book ai didi

postgresql - Postgres 从 jsonb 数组中提取值

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

我有一个 jsonb 字段,其中包含如下所示的数组:

[  
{
"type":"discount",
"title":"Discount 10%"
},
{
"file":"zx5rP8EoacyfhqGndcSOnP8VYtkr9Ya8Nvf7oYL98YDsM1CLMYIurYvfVUU4AGkzBsovwssT0bq.pdf",
"type":"menu",
"title":"Some menu title etc"
}
]

如果数组中有 type=menu,我想获取 file 属性。

我设法做的是知道是否有一个,但我如何才能最终提取文件值?

case when offers @> '[{"type":"menu"}]' then true else false end

我不想在下面做这样的事情,因为数组可能不包含折扣类型。

offers->1->'file'

最佳答案

使用 jsob_array_elements()->> 运算符(参见 JSON Functions and Operators。)

with a_table(json_col) as (
values (
'[
{
"type":"discount",
"title":"Discount 10%"
},
{
"file":"zx5rP8EoacyfhqGndcSOnP8VYtkr9Ya8Nvf7oYL98YDsM1CLMYIurYvfVUU4AGkzBsovwssT0bq.pdf",
"type":"menu",
"title":"Some menu title etc"
}
]'::jsonb)
)

select value->>'file' as filename
from a_table,
lateral jsonb_array_elements(json_col)
where value->>'type' = 'menu'

filename
---------------------------------------------------------------------------------
zx5rP8EoacyfhqGndcSOnP8VYtkr9Ya8Nvf7oYL98YDsM1CLMYIurYvfVUU4AGkzBsovwssT0bq.pdf
(1 row)

关于postgresql - Postgres 从 jsonb 数组中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42136013/

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