PostgreSQL array_fill() Function
The PostgreSQL array_fill()
function returns an array filled with the specified elements.
array_fill()
Syntax
Here is the syntax of the PostgreSQL array_fill()
function:
array_fill(element, demension_length[, lower_bound]) -> array
Parameters
element
-
Required. The element to fill into the array.
demension_length
-
Required. The dimensions of the array to be returned and the length of each dimension. It is a one-dimensional integer array. For example,
ARRAY[2]
represents a one-dimensional array with a length of 2;ARRAY[2,3]
represents a two-dimensional array whose first dimension has a length of 2 and its second dimension has a length of 3. lower_bound
-
Optional. The starting index of the array. It is a one-dimensional integer array and it should correspond to
demension_length
. For example,ARRAY[2]
means that the one-dimensional array’s starting index is 2;ARRAY[2,3]
means that the first dimension array’s starting index is 2, and the second dimension array’s starting index is 3. The default is1
.
Return value
The PostgreSQL array_fill()
function returns an array whose dimensions are specified by demension_length
and filled with element
.
If the element
is ambiguous, the array_fill()
function returns an error: “could not determine polymorphic type because input has type unknown”.
array_fill()
Examples
One-dimensional Array
This example shows how to use the PostgreSQL array_fill()
function to get a one-dimensional array filled with 1
.
SELECT array_fill(1, ARRAY[5]);
array_fill
-------------
{1,1,1,1,1}
You can also specify the starting index of the array. If you want to get a one-dimensional array and its index starts from 3.
SELECT array_fill(1, ARRAY[5], ARRAY[3]);
array_fill
-------------------
[3:7]={1,1,1,1,1}
Multidimensional Arrays
This example shows how to use the PostgreSQL array_fill()
function to get a two-dimensional array filled with 1
.
SELECT array_fill(1, ARRAY[3, 2]);
array_fill
---------------------
{{1,1},{1,1},{1,1}}
Likewise, you can also specify a starting index for the two-dimensional array, for example:
SELECT array_fill(1, ARRAY[3, 2], ARRAY[2, 2]);
array_fill
--------------------------------
[2:4][2:3]={{1,1},{1,1},{1,1}}
It is also possible to generate a three-dimensional array using the PostgreSQL array_fill()
function, for example:
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}}}
type of element
If you want to get an array filled with x
. You may do that like:
SELECT array_fill('x', ARRAY[3, 2]);
You will get an error: “The polymorphic type could not be determined because the input type is unknown”.
You need to provide an exact type for x
:
SELECT array_fill('x'::TEXT, ARRAY[3, 2]);
array_fill
---------------------
{{x,x},{x,x},{x,x}}