在 Postgresql 中枚举 JSON 个数组元素
Enumerate JSON Array Elements in Postgresql
有没有办法查询 jsonb 数组项及其在 postgresql 中枚举的顺序?
例如:
SELECT * FROM jsonb_array_elements('[1,2,[3,4]]'::jsonb)
结果:
value
1
2
[3, 4]
我想要这些结果:
key value
0 1
1 2
2 [3, 4]
因为我认为我可以安全地假设任何未明确排序的 select 语句都是无序的,所以我认为简单的 ROW_NUMBER() 在这种情况下不会可靠地工作。
运算符with ordinality
将生成数组索引值:
SELECT idx, value
FROM jsonb_array_elements('[1,2,[3,4]]'::jsonb) with ordinality as t(value, idx)
order by idx
有没有办法查询 jsonb 数组项及其在 postgresql 中枚举的顺序?
例如:
SELECT * FROM jsonb_array_elements('[1,2,[3,4]]'::jsonb)
结果:
value
1
2
[3, 4]
我想要这些结果:
key value
0 1
1 2
2 [3, 4]
因为我认为我可以安全地假设任何未明确排序的 select 语句都是无序的,所以我认为简单的 ROW_NUMBER() 在这种情况下不会可靠地工作。
运算符with ordinality
将生成数组索引值:
SELECT idx, value
FROM jsonb_array_elements('[1,2,[3,4]]'::jsonb) with ordinality as t(value, idx)
order by idx