Postgres嵌套会忽略数组的数组结构

时间:2019-07-30 01:39:29

标签: arrays postgresql

这两个Postgres函数调用返回相同的结果,而我希望后者保留其嵌套数组结构。我该怎么办?

SELECT * FROM unnest('{1, 10, 100, 2, 11, 101}'::integer[]);

SELECT * FROM unnest('{{1, 10, 100}, {2, 11, 101}}'::integer[]);

处理数组数组时需要这个。

2 个答案:

答案 0 :(得分:2)

有一个与此有关的Wiki页面。 https://wiki.postgresql.org/wiki/Unnest_multidimensional_array

此外,PostgreSQL具有比数组更多的JSON功能。

SELECT * FROM jsonb_array_elements(to_jsonb('{{1, 10, 100}, {2, 11, 101}}'::integer[]));

答案 1 :(得分:1)

使用此解决方案:@LukasEklund和@ErwinBrandstetter的https://codeslide.in/contact

https://stackoverflow.com/a/8142998/3984221

SELECT array_agg(t.myarray[d1][d2])
FROM   mytable t,
       generate_subscripts(t.myarray,1) d1,
       generate_subscripts(t.myarray,2) d2
GROUP  BY d1
ORDER  BY d1

demo:db<>fiddle生成一个从1到第二个参数给出的尺寸大小的连续数字列表。