PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So aktualisieren Sie ein Array in PostgreSQL

PostgreSQL erleichtert die Arbeit mit Array-Datentypen. Manchmal müssen Sie das Array in PostgreSQL möglicherweise mit neuen Daten aktualisieren. In diesem Artikel sehen wir uns an, wie man Arrays in PostgreSQL ändert, Arrays in PostgreSQL ändert und Arrays in PostgreSQL zusammenführt.


So aktualisieren Sie ein Array in PostgreSQL

Hier sind die verschiedenen Möglichkeiten, das Array in PostgreSQL zu aktualisieren. Nehmen wir an, Sie haben die folgende Array-Spalte.

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

Im obigen Beispiel haben wir die Spalte sales erstellt als Array von ganzen Zahlen.

Lassen Sie uns auch Daten in unsere Array-Spalte einfügen.

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


Alle Elemente in einem Array ersetzen

Sie können alle Elemente eines Arrays einfach mit der UPDATE … SET-Anweisung ersetzen.

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

In der obigen UPDATE-Anweisung stellen wir Array-Werte in geschweiften Klammern bereit, die in einfache Anführungszeichen eingeschlossen sind. Postgres ersetzt das gesamte Array für Zeilen, die der WHERE-Bedingung entsprechen.


Einige Elemente in einem Array ersetzen

Sie können auch bestimmte Array-Elemente wie unten gezeigt ersetzen.

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

In der obigen Anweisung ersetzen wir nur das zweite Array-Element, indem wir den Wert sales[2] setzen.


An Array anhängen und voranstellen

Mit array_append können Sie auch Werte an Ihr Array anhängen und voranstellen und array_prepend Funktionen, wie unten gezeigt.

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

Hier ist die Abfrage, die einem Array vorangestellt werden soll.

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

Bitte beachten Sie, in array_append , müssen Sie den anzuhängenden Wert als zweites Argument in der Funktion angeben. Im Fall von array_prepend , müssen Sie es als erstes Element angeben.


Array-Element entfernen

Ebenso können Sie array_remove verwenden Funktion zum Entfernen von Elementen aus dem 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 Sie müssen das Array-Element angeben, das Sie entfernen möchten.


Arrays in PostgreSQL zusammenführen

Sie können zwei Arrays in PostgreSQL mit array_cat zusammenführen Funktion

# 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 Funktion können Sie eine Array-Spalte übergeben oder ein ARRAY-Literalobjekt verwenden.

Benötigen Sie ein Reporting-Tool für PostgreSQL? Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!