PostgreSQL array_fill() 函数使用指南

PostgreSQL array_fill() 函数返回一个填充了指定的元素的数组。

array_fill() 语法

这里是 PostgreSQL array_fill() 函数的语法:

array_fill(element, demension_length[, lower_bound]) -> array

参数

element
必需的。 要填充到数组的元素。
demension_length
必需的。 要返回的数组的维度和每个维度的长度。 类型: integer[]。 比如,ARRAY[2] 表示一个长度为 2 的一维数组; ARRAY[2,3] 表示一个二维数组,其第一维长度为 2, 其第二维长度为 3。
lower_bound
可选的。 开始填充数据的起始下标。 它应该和 demension_length 对应。比如 ARRAY[2] 表示从下标 2 开始填充一维数组; ARRAY[2,3] 表示从下标 2 开始填充第一维,从下标 3 开始填充第二维。默认为 1

返回值

PostgreSQL array_fill() 函数返回一个数组,该数组的维度通过 demension_length 指定并且该数组填满了 element 元素。

如果元素 element 的类型是不明确的, array_fill() 函数将返回一个错误: ”could not determine polymorphic type because input has type unknown“。

array_fill() 示例

一维数组

本示例展示了如何使用 PostgreSQL array_fill() 函数获取一个填充了 1 的长度为 5 的一维数组。

SELECT array_fill(1, ARRAY[5]);
 array_fill
-------------
 {1,1,1,1,1}

您也可以指定数组的起始下标。比如您想要获取一个填充了 1 的长度为 5 且下标从 3 开始的一维数组。

SELECT array_fill(1, ARRAY[5], ARRAY[3]);
    array_fill
-------------------
 [3:7]={1,1,1,1,1}

多维数组

本示例展示了如何使用 PostgreSQL array_fill() 函数获取一个填充了 1 的二维数组。

SELECT array_fill(1, ARRAY[3, 2]);
     array_fill
---------------------
 {{1,1},{1,1},{1,1}}

同样,您也可以为二维数组指定起始下标。比如:

SELECT array_fill(1, ARRAY[3, 2],  ARRAY[2, 2]);
           array_fill
--------------------------------
 [2:4][2:3]={{1,1},{1,1},{1,1}}

使用 PostgreSQL array_fill() 函数生成一个三维数组也是可能的。比如:

SELECT array_fill(1, ARRAY[2, 2, 2],  ARRAY[2, 2, 2]);
                  array_fill
-----------------------------------------------
 [2:3][2:3][2:3]={{{1,1},{1,1}},{{1,1},{1,1}}}

元素的类型

如果您想使用下面的语句获取一个填充了字符 x 的数组:

SELECT array_fill('x', ARRAY[3, 2]);

您会收到一个错误提示:”无法确定多态类型, 因为输入类型为 unknown“。

您需要对 x 提供一个准确的类型:

SELECT array_fill('x'::TEXT, ARRAY[3, 2]);
     array_fill
---------------------
 {{x,x},{x,x},{x,x}}