By default, PostgreSQL arrays are one-based. That means that the numbering starts at subscript 1 and increments with each element in the array. However, we can change this so that the array starts at a different subscript.
Example
We can use subscripted assignment to create a zero-based array:
SELECT ('[0:2]={ "Cat", "Dog", "Horse" }'::text[]);
Result:
[0:2]={Cat,Dog,Horse}
The bit at the front that goes [0:2]=
is subscripted assignment that specifies the array’s range. In this case I specified that it goes from 0
to 2
, which means that it’s a zero-based array.
Now when we want to reference an element, we need to use the subscript that adheres to the array’s zero-based range:
SELECT ('[0:2]={ "Cat", "Dog", "Horse" }'::text[])[1];
Result:
Dog
In this case I appended [1]
to the SELECT
statement, which means that I wanted to return the element at subscript 1
. Given this is a zero-based array, that subscript represents the second element in the array.