相关疑难解决方法(0)

Unnest阵列一级

我想获取一个n维度数组和包含n-1维数组行的返回集.例如,获取数组ARRAY[[1,2,3], [4,5,6], [7,8,9]]并返回一个集合{1,2,3}, {4,5,6}, {7,8,9}.使用unnest返回集合1,2,3,4,5,6,7,8,9.

我尝试从PostgreSQL 8.4中获取不需要的函数,这似乎就像我正在寻找的那样:

CREATE OR REPLACE FUNCTION tstng.unnest2(anyarray)
    RETURNS SETOF anyelement
    LANGUAGE plpgsql
    IMMUTABLE
    AS $$
    BEGIN
            RETURN QUERY SELECT $1[i]
                FROM generate_series(array_lower($1,1), array_upper($1,1)) i;
        END;
    $$;
Run Code Online (Sandbox Code Playgroud)

但是,SELECT tstng.unnest2(ARRAY[[1,2,3], [4,5,6], [7,8,9]]);返回集合, ,(即:3个空行).

我还发现SELECT (ARRAY[[1,2,3], [4,5,6], [7,8,9]])[0];返回null,我认为这是我问题的根源.

arrays postgresql plpgsql

11
推荐指数
2
解决办法
1万
查看次数

PostgreSQL多维数组

我试图将数据作为一个多维数组传递,我的行为对我来说似乎很奇怪.具体来说,我试图从二维数组中获取单个元素(因此我的二维数组中的一维数组),并且它不能按照我期望的方式工作.

在下面的例子中,#2,4和5以我期望的方式工作,但1和3没有.

db=> select s.col[2] from (select array[[1,2,3],[4,5,6]] as col) s;
 col
-----

(1 row)

db=> select s.col[2:2] from (select array[[1,2,3],[4,5,6]] as col) s;
 col 
-----
 {{4,5,6}}
(1 row)

db=> select array[s.col[2]] from (select array[[1,2,3],[4,5,6]] as col) s;
 array  
--------
 {NULL}
(1 row)

db=> select array[s.col[2:2]] from (select array[[1,2,3],[4,5,6]] as col) s;
    array    
 -------------
 {{{4,5,6}}}
(1 row)

db=> select s.col[2][1] from (select array[[1,2,3],[4,5,6]] as col) s;
 col 
-----
   4
(1 row)
Run Code Online (Sandbox Code Playgroud)

有这方面的文件吗?我现在有一些对我来说运作良好的东西,但它很难看,我担心它不会做我想做的事情.从技术上讲,我得到一个二维数组,其中1维只有1个元素.我宁愿得到一个阵列.

我读过(其中包括):

我只是没有看到我在寻找什么.

arrays postgresql multidimensional-array unnest

6
推荐指数
1
解决办法
9266
查看次数

在 Postgresql 中取消多维数组的一层嵌套

假设我有这个三维数组:

ARRAY[[['abc', 'def'], ['ghi', 'jkl']], [['mno', 'pqr'], ['stu', 'vwx']]]
Run Code Online (Sandbox Code Playgroud)

我怎样才能摆脱{{abc,def},{ghi,jkl}}它?

如果我尝试:

SELECT (ARRAY[[['abc', 'def'], ['ghi', 'jkl']], [['mno', 'pqr'], ['stu', 'vwx']]])[1:1]
Run Code Online (Sandbox Code Playgroud)

我明白了{{{abc,def},{ghi,jkl}}},但我需要{{abc,def},{ghi,jkl}}

类似问题的答案可以解决二维数组的问题,例如这个,但这些答案不适用于 n 维数组。

这是一个非常基本的任务,但在 PostgreSQL 中似乎相当棘手。

sql arrays postgresql

5
推荐指数
1
解决办法
406
查看次数