sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man uppdaterar Array i PostgreSQL

PostgreSQL gör det enkelt att arbeta med arraydatatyp. Ibland kan du behöva uppdatera array i PostgreSQL med ny data. I den här artikeln kommer vi att titta på hur man ändrar array i PostgreSQL, ändrar array i PostgreSQL och slår samman arrayer i PostgreSQL.


Hur man uppdaterar Array i PostgreSQL

Här är de olika sätten att uppdatera array i PostgreSQL. Låt oss säga att du har följande matriskolumn.

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

I exemplet ovan har vi skapat kolumnen försäljning som en matris av heltal.

Låt oss också infoga data i vår matriskolumn.

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


Ersätt alla element i en array

Du kan enkelt ersätta alla element i en array med UPDATE … SET-satsen.

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

I ovanstående UPDATE-uttalande tillhandahåller vi arrayvärden inom hängslen omgivna av enkla citattecken. Postgres kommer att ersätta hela arrayen för rader som matchar WHERE-villkoret.


Ersätt vissa element i en array

Du kan också ersätta specifika array-element som visas nedan.

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

I ovanstående uttalande ersätter vi endast det andra matriselementet genom att ställa in försäljningsvärde[2].


Lägg till och prepend till array

Du kan också lägga till och lägga till värden i din array med array_append och array_prepend fungerar respektive, som visas nedan.

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

Här är frågan som ska läggas till en 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}

Observera, i array_append måste du ange värdet som ska läggas till som andra argument i funktion. I fallet med array_prepend måste du ange det som det första elementet.


Ta bort arrayelement

På samma sätt kan du använda array_remove funktion för att ta bort element från array.

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

I array_remove du måste ange arrayelementet som du vill ta bort.


Slå samman matriser i PostgreSQL

Du kan slå samman två arrayer i PostgreSQL med array_cat 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}

I array_cat funktion, kan du skicka array-kolumn eller använda ARRAY literal object.

Behöver du ett rapporteringsverktyg för PostgreSQL? Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!

  1. MAX() Funktion i PostgreSQL

  2. Mysql-täckning vs sammansatt vs kolumnindex

  3. Hitta orsaken till dödlägesfel från oracle trace-fil

  4. Skapa HTML-tabell med SQL FOR XML