【问题标题】:PostgreSQL getting an array out of a two dimensional arrayPostgreSQL 从二维数组中获取数组
【发布时间】:2018-02-24 16:40:45
【问题描述】:

在 PostgreSQL 中,我有一个二维数组,例如:

   SELECT ARRAY[[1,2,3],[4,5,6]]

我想从这个数组中检索整个第一个 ([1,2,3]) 数组。 可悲的是:

  SELECT (ARRAY[[1,2,3],[4,5,6]])[1]

不起作用,因为它返回一个空值。

有可能吗?

【问题讨论】:

    标签: sql arrays postgresql


    【解决方案1】:
    create table test(id int, val int[][]);
    insert into test values (1, ARRAY[[1,2,3],[4,5,6]]);
    
    ✓ 1 行受影响
    select id, val[1:1] from test;
    
    编号 |值 -: | :-------- 1 | {{1,2,3}}
    SELECT (ARRAY[[1,2,3],[4,5,6]])[1:1]
    
    |数组 | | :-------- | | {{1,2,3}} |

    dbfiddle here

    【讨论】:

    • 也很好用。我可能会使用 Roman 的方式,因为我已经了解它是如何工作的。谢谢
    【解决方案2】:

    好的,我解决了:

    SELECT (ARRAY[[1,2,3],[4,5,6]])[1][1:3]
    

    完全符合我的要求。

    【讨论】:

    • 可能select(array[[1,2,3],[4,5,6]])[1][:] 会更通用一些
    • @Roman:您的评论是 Postgres 9.6 或更高版本的最终答案。
    • 这样效果更好,因为它节省了我用于计算数组大小的时间,除非 Postgres 这样做。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多