PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come aggiornare l'array in PostgreSQL

PostgreSQL semplifica il lavoro con il tipo di dati array. A volte potrebbe essere necessario aggiornare l'array in PostgreSQL con nuovi dati. In questo articolo, vedremo come modificare l'array in PostgreSQL, modificare l'array in PostgreSQL e unire gli array in PostgreSQL.


Come aggiornare l'array in PostgreSQL

Ecco i diversi modi per aggiornare l'array in PostgreSQL. Supponiamo che tu abbia la seguente colonna dell'array.

# create table employees ( 
     id int, 
     name varchar, 
     sales integer[] 
);

Nell'esempio sopra, abbiamo creato la colonna vendite come matrice di numeri interi.

Inseriamo anche i dati nella nostra colonna dell'array.

# 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}


Sostituisci tutti gli elementi in un Array

Puoi facilmente sostituire tutti gli elementi di un array usando l'istruzione 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}

Nell'istruzione UPDATE sopra, forniamo valori di matrice tra parentesi graffe racchiuse tra virgolette singole. Postgres sostituirà l'intero array per le righe che corrispondono alla condizione WHERE.


Sostituisci alcuni elementi in un Array

Puoi anche sostituire elementi di array specifici come mostrato di seguito.

=# 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}

Nella dichiarazione precedente, sostituiamo solo il secondo elemento dell'array impostando il valore sales[2].


Aggiungi e anteponi all'array

Puoi anche aggiungere e anteporre valori al tuo array usando array_append e array_prepend rispettivamente, come mostrato di seguito.

# 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}

Ecco la query da anteporre a un array.

# 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}

Nota, in array_append , è necessario specificare il valore da aggiungere come secondo argomento nella funzione. In caso di array_prepend , devi specificarlo come primo elemento.


Rimuovi l'elemento dell'array

Allo stesso modo, puoi usare array_remove funzione per rimuovere l'elemento dall'array.

# select array_remove(sales, 9) as reduced_array from employees where id=1;
   reduced_array
--------------------
 {10,41,31,10,11,1}

In array_remove devi specificare l'elemento dell'array che vuoi rimuovere.


Unisci gli array in PostgreSQL

Puoi unire due array in PostgreSQL usando array_cat funzione

# 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}

In array_cat funzione, puoi passare la colonna dell'array o usare l'oggetto letterale ARRAY.

Hai bisogno di uno strumento di reporting per PostgreSQL? Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!