PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como atualizar array no PostgreSQL


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!