O PostgreSQL facilita o trabalho com o tipo de dados array. Às vezes você pode precisar atualizar o array no PostgreSQL com novos dados. Neste artigo, veremos como alterar array no PostgreSQL, modificar array no PostgreSQL e mesclar arrays no PostgreSQL.
Como atualizar array no PostgreSQL
Aqui estão as diferentes maneiras de atualizar o array no PostgreSQL. Digamos que você tenha a seguinte coluna de matriz.
#create table employees (
id int,
name varchar,
sales integer[]
);
No exemplo acima, criamos a coluna vendas como uma matriz de inteiros.
Vamos também inserir dados em nossa coluna de matriz.
# insert into employees (id, name, sales) values (1, ' John Doe', ARRAY [9,7,5,4,3,2]), (2, ' Jim Day', ARRAY [8,6,3,2,9,2]); # select * from employees; id | name | sales ----+-----------+--------------- 1 | John Doe | {9,7,5,4,3,2} 2 | Jim Day | {8,6,3,2,9,2}
Substituir todos os elementos em uma matriz
Você pode substituir facilmente todos os elementos de um array usando a instrução UPDATE … SET.
# update employees set sales = '{10,12,31,10,11}' where id=1; # select * from employees; id | name | sales ----+-----------+------------------ 2 | Jim Day | {8,6,3,2,9,2} 1 | John Doe | {10,12,31,10,11}
Na instrução UPDATE acima, fornecemos valores de matriz entre chaves entre aspas simples. O Postgres substituirá o array inteiro por linhas que correspondam à condição WHERE.
Substituir alguns elementos em um Array
Você também pode substituir elementos de array específicos conforme mostrado abaixo.
=# update employees set sales[2] = 41 where id=1; # select * from employees; id | name | sales ----+-----------+------------------ 2 | Jim Day | {8,6,3,2,9,2} 1 | John Doe | {10,41,31,10,11}
Na instrução acima, substituímos apenas o segundo elemento da matriz definindo o valor sales[2].
Anexar e preceder à matriz
Você também pode anexar e preceder valores ao seu array usando array_append e array_prepend funções respectivamente, como mostrado abaixo.
# update employees set sales = array_append(sales, 1) where id=1; # select * from employees; id | name | sales ----+-----------+-------------------- 2 | Jim Day | {8,6,3,2,9,2} 1 | John Doe | {10,41,31,10,11,1}
Aqui está a consulta para preceder uma matriz.
# update employees set sales = array_prepend(9,sales) where id=1; # select * from employees; id | name | sales ----+-----------+---------------------- 2 | Jim Day | {8,6,3,2,9,2} 1 | John Doe | {9,10,41,31,10,11,1}
Observe que em array_append , você precisa especificar o valor a ser anexado como segundo argumento na função. No caso de array_prepend , você precisa especificá-lo como o primeiro elemento.
Remover elemento de matriz
Da mesma forma, você pode usar array_remove função para remover o elemento da matriz.
# select array_remove(sales, 9) as reduced_array from employees where id=1; reduced_array -------------------- {10,41,31,10,11,1}
Em array_remove você precisa especificar o elemento da matriz que deseja remover.
Mesclar arrays no PostgreSQL
Você pode mesclar dois arrays no PostgreSQL usando array_cat função
# select array_cat(sales, '{9,3}') as merged_array from employees where id=1; merged_array -------------------------- {9,10,41,31,10,11,1,9,3} # select array_cat(array[1,2],'{9,3}') as merged_array from employees where id=1; merged_array -------------- {1,2,9,3}
Em array_cat função, você pode passar a coluna array ou usando o objeto literal ARRAY.
Precisa de uma ferramenta de relatório para PostgreSQL? O Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!