There are some functions called ...length, but only array_length returns NULL on empty array, why ?
select array_length('{}'::text[],1), -->NULL
jsonb_array_length('[]'), -->0
bit_length(''), -->0
octet_length(''), -->0
length(''), -->0
char_length(''), -->0
length(B''); -->0
jsonb_array_length('[]'), -->0
bit_length(''), -->0
octet_length(''), -->0
length(''), -->0
char_length(''), -->0
length(B''); -->0
I know, it is documented, but the question is, why does it work differently ?
array_length
( anyarray
, integer
) → integer
Returns the length of the requested array dimension. (Produces NULL instead of 0 for empty or missing array dimensions.)
array_length(array[1,2,3], 1)
→ 3
array_length(array[]::int[], 1)
→ NULL
array_length(array['text'], 2)
→ NULL