Удалил последний элемент из json []? - PullRequest
1 голос
/ 23 октября 2019

У меня есть массив json[] (_result_group) в PostgreSQL 9.4, и я хочу удалить его последний элемент json (_current). Я подготовил с:

_result_group := (SELECT array_append(_result_group,_current));

И попытался удалить с помощью:

SELECT _result_group[1:array_length(_result_group,1) -1] INTO _result_group;

Но это не сработало.
Как это сделать?

1 Ответ

0 голосов
/ 23 октября 2019

Чтобы удалить элемент last из любого массива (включая json[]) средствами Postgres 9.4, очевидно, в коде plpgsql:

_result_group := _result_group[1:cardinality(_result_group)-1];

Предполагая одномерный массив с индексами по умолчанию, начинающимися с 1 .

Вы получаете пустой массив для ввода пустого массива и null для нуля.

Согласно руководство , cardinality() ...

возвращает общее количество элементов в массиве или 0, если массив пуст

Тогда просто возьмитесечение массива от 1 до кардинальности -1.

Опять же, ваша попытка также должна работать:

SELECT _result_group[1:array_length(_result_group,1) -1] INTO _result_group;

Для нестандартных индексов массива см .:

...