усекать поля массива - PullRequest
       10

усекать поля массива

0 голосов
/ 15 апреля 2019

Я пытаюсь усечь значение в массиве целых чисел до 8 десятичных знаков в Postgres в операторе SQL SELECT и вернуть очищенный массив.

[1.030411088488374,1.0985247734044379,1.0863039797613594]

1 Ответ

0 голосов
/ 15 апреля 2019

Вам необходимо развернуть массив, обрезать каждый элемент, а затем объединить элементы обратно в массив:

select array_agg(trunc(n, 8) order by idx)
from unnest(array[1.030411088488374,1.0985247734044379,1.0863039797613594]::numeric[]) with ordinality as t(n,idx);

Если вам нужно сделать этот журнал, рассмотрите возможность создания функции:

create function trunc_elements(p_numbers numeric[], p_num_digits int)
  returns numeric[]
as
$$
  select array_agg(trunc(n, p_num_digits) order by idx)
  from unnest(p_numbers) with ordinality as t(n,idx);
$$
language sql;
...