gpt4 book ai didi

json - Postgres : expand JSON array elements into values with their index?

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

我有一个表,其中有一列包含一个 JSON 数组。例如:

with example as (
select '["a", "b"]'::jsonb as col
union select ('["c", "d", "e"]'::jsonb) as col
)
select col from example

返回:

col
["a", "b"]
["c", "d", "e"]

我可以使用 jsonb_array_elements 将每个数组展开成行:

select jsonb_array_elements(col) from example

返回:

jsonb_array_elements
"a"
"b"
"c"
"d"
"e"

我想要每个数组元素的索引以及元素本身(有点像 Python 的 enumerate ),如下所示:

jsonb_array_elements    array_index
"a" 1
"b" 2
"c" 1
"d" 2
"e" 3

我该怎么做?

我的应用程序具有只读访问权限,因此我无法创建函数。

最佳答案

使用与序数:

with example (col) as (
values
('["a", "b"]'::jsonb),
('["c", "d", "e"]'::jsonb)
)
select t.*
from example, jsonb_array_elements(col) with ordinality as t(e,idx)

返回:

e   | idx
----+----
"a" | 1
"b" | 2
"c" | 1
"d" | 2
"e" | 3

with ordinality 只能在 from 子句中使用集合返回函数时使用,无论如何强烈推荐。

关于json - Postgres : expand JSON array elements into values with their index?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48823910/

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