读完这篇文章后,我写了一个天真的尝试来制作这个
col1
---------
1
4
7
Run Code Online (Sandbox Code Playgroud)
由此
ARRAY[[1,2,3], [4,5,6], [7,8,9]]
这有效
SELECT unnest((ARRAY[[1,2,3], [4,5,6], [7,8,9]])[1:3][1:1]);
但就我而言,我不知道外部数组的长度。
那么有没有一种方法可以将切片“字符串”组合在一起以考虑到这种可变性?
这是我的尝试。我知道,这有点好笑
_ids := _ids_2D[('1:' || array_length(_ids_2D, 1)::text)::int][1:1];
正如你所看到的,我只是想创建 的效果[1:n]。显然'1:3'不会很好地解析数组切片所需的内容。
我显然可以使用unnest_2d_1d上面链接的答案中欧文提到的东西,但希望有更优雅的东西。
小智 5
如果您试图获取数组(第一维)内所有嵌套(第二维)数组的第一个元素,那么您可以使用
array_upper(anyarray, 1)
Run Code Online (Sandbox Code Playgroud)
获取特定维度的所有元素
anyarray[1:array_upper(anyarray, 1)][<dimension num>:<dimension num>]
Run Code Online (Sandbox Code Playgroud)
例如,获取第一维的所有元素
anyarray[1:array_upper(anyarray, 1)][1:1]
Run Code Online (Sandbox Code Playgroud)
如上面的代码所示。请参阅 PostgreSQL 手册中有关数组的部分以获取更多信息。
| 归档时间: |
|
| 查看次数: |
1654 次 |
| 最近记录: |