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}}