Обсуждение: Split_Part w/negative integer does not work

Поиск
Список
Период
Сортировка

Split_Part w/negative integer does not work

От
PG Doc comments form
Дата:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/15/functions-string.html
Description:

When n is negative, an error occurs.

Documentation
split_part ( string text, delimiter text, n integer ) → text
Splits string at occurrences of delimiter and returns the n'th field
(counting from one), or when n is negative, returns the |n|'th-from-last
field.
split_part('abc~@~def~@~ghi', '~@~', 2) → def
split_part('abc,def,ghi,jkl', ',', -2) → ghi

Observation
SELECT split_part('abc,def,ghi,jkl', ',', -1);
generates
ERROR:  field position must be greater than zero
SQL state: 22023

Or in code
DO $$
DECLARE
    mytxt text;
BEGIN
mytxt = split_part('abc,def,ghi,jkl', ',', -1);
RAISE NOTICE '%', mytxt;
END $$

ERROR:  field position must be greater than zero
CONTEXT:  SQL statement "SELECT split_part('abc,def,ghi,jkl', ',', -1)"
PL/pgSQL function inline_code_block line 6 at assignment
SQL state: 22023

Re: Split_Part w/negative integer does not work

От
Erik Wienhold
Дата:
> On 24/03/2023 21:45 CET PG Doc comments form <noreply@postgresql.org> wrote:
>
> The following documentation comment has been logged on the website:
>
> Page: https://www.postgresql.org/docs/15/functions-string.html
> Description:
>
> When n is negative, an error occurs.
>
> Documentation
> split_part ( string text, delimiter text, n integer ) → text
> Splits string at occurrences of delimiter and returns the n'th field
> (counting from one), or when n is negative, returns the |n|'th-from-last
> field.
> split_part('abc~@~def~@~ghi', '~@~', 2) → def
> split_part('abc,def,ghi,jkl', ',', -2) → ghi
>
> Observation
> SELECT split_part('abc,def,ghi,jkl', ',', -1);
> generates
> ERROR:  field position must be greater than zero
> SQL state: 22023

Works on 14 and 15.  Support for negative indexes was added in 14.  What
version do you use?

https://www.postgresql.org/docs/14/release-14.html#id-1.11.6.12.5.8

--
Erik



Re: Split_Part w/negative integer does not work

От
Tom Lane
Дата:
PG Doc comments form <noreply@postgresql.org> writes:
> Page: https://www.postgresql.org/docs/15/functions-string.html
> Documentation
> split_part ( string text, delimiter text, n integer ) → text
> Splits string at occurrences of delimiter and returns the n'th field
> (counting from one), or when n is negative, returns the |n|'th-from-last
> field.
> split_part('abc~@~def~@~ghi', '~@~', 2) → def
> split_part('abc,def,ghi,jkl', ',', -2) → ghi

> Observation
> SELECT split_part('abc,def,ghi,jkl', ',', -1);
> generates
> ERROR:  field position must be greater than zero
> SQL state: 22023

Apparently, you are reading the v15 documentation and expecting it
to be exactly correct for some older server version.  The described
behavior came in in v14.

            regards, tom lane