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