Re: How to remove an item from integer array type

Поиск
Список
Период
Сортировка
От Ian Lawrence Barwick
Тема Re: How to remove an item from integer array type
Дата
Msg-id CAB8KJ=gpc9U6ZKp8MXWbnWDWhAfgrcUJ_08gedj8sk_7k8Lx3A@mail.gmail.com
обсуждение исходный текст
Ответ на How to remove an item from integer array type  (ChoonSoo Park <luispark@gmail.com>)
Ответы Re: How to remove an item from integer array type  (ChoonSoo Park <luispark@gmail.com>)
Список pgsql-general
2013/2/21 ChoonSoo Park <luispark@gmail.com>
>
> Hello Gurus,
>
> Table A has integer[] column. I need to delete specific integer value from that column.
>
> f1     |     f2
> 1           {100, 101, 102, 103}
> 2           {200, 300, 400}
>
> I want to remove 101 from f2 and also preserve the order.
>
> f1     |     f2
> 1           {100, 102, 103}
> 2           {200, 300, 400}
>
> I tried the following query and it did remove the 101 but it didn't preserve the order.
> update tableA set f2 = (select array_agg(X.id) from (select unnest(f2) id except select 101 id) X) where f1 = 1;
>
> What's the best way to do this?

Assuming you want to keep the values in numeric order, add an ORDER BY:

update tableA set f2 = (select array_agg(X.id) from (select unnest(f2)
id except select 101 id ORDER BY id) X) where f1 = 1;

HTH

Ian Barwick

В списке pgsql-general по дате отправления:

Предыдущее
От: ChoonSoo Park
Дата:
Сообщение: How to remove an item from integer array type
Следующее
От: ChoonSoo Park
Дата:
Сообщение: Re: How to remove an item from integer array type