arraysdatabasepostgresql-9.6

LENGTH of ARRAY [42883]: ERROR: function array_length(text[]) does not exist


ON PostgreSQL 9.6.10 (Red Hat 4.8.5-28), 64-bit

select string_to_array('file.name.pdf', '.')
{file,nome,pdf}

select array_length(string_to_array('file.nome.pdf', '.'))
[42883]: ERROR: function array_length(text[]) does not exist

SELECT length(string_to_array('file.nome.pdf', '.'));
[42883]: ERROR: function length(text[]) does not exist

I would like return 3 like result of length of array of elements. I would like to use it into function to manage fileName.

elements = string_to_array('file.name.pdf', '.');
extention = elements[array_length(elements)]; -- LAST single extension es: doc, pdf, svg, html, ...
file_name = STRING_AGG(elements[:array_length(elements-1)]; -- "file.name" for "file.name.pdf"

Solution

  • As documented in Array Functions and Operators, you need to pass a dimension index to array_length, even if your array is one-dimensional.

    select array_length(string_to_array('file.nome.pdf', '.'), 1)