sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo actualizar una matriz en PostgreSQL

PostgreSQL facilita el trabajo con el tipo de datos de matriz. A veces, es posible que deba actualizar la matriz en PostgreSQL con nuevos datos. En este artículo, veremos cómo cambiar una matriz en PostgreSQL, modificar una matriz en PostgreSQL y fusionar matrices en PostgreSQL.


Cómo actualizar una matriz en PostgreSQL

Estas son las diferentes formas de actualizar la matriz en PostgreSQL. Digamos que tiene la siguiente columna de matriz.

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

En el ejemplo anterior, hemos creado la columna ventas como una matriz de enteros.

También insertemos datos en nuestra columna 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}


Reemplazar todos los elementos en una matriz

Puede reemplazar fácilmente todos los elementos de una matriz utilizando la instrucción 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}

En la declaración de ACTUALIZACIÓN anterior, proporcionamos valores de matriz entre llaves entre comillas simples. Postgres reemplazará toda la matriz por filas que coincidan con la condición WHERE.


Reemplazar algunos elementos en un Array

También puede reemplazar elementos de matriz específicos como se muestra a continuación.

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

En la declaración anterior, reemplazamos solo el segundo elemento de la matriz al establecer el valor de ventas[2].


Anexar y anteponer a la matriz

También puede agregar y anteponer valores a su matriz usando array_append y array_prepend respectivamente, como se muestra a continuación.

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

Aquí está la consulta para anteponer a una 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}

Tenga en cuenta que en array_append , debe especificar el valor que se agregará como segundo argumento en la función. En el caso de array_prepend , debe especificarlo como el primer elemento.


Eliminar elemento de matriz

Del mismo modo, puede usar array_remove función para eliminar el elemento de la matriz.

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

En array_remove debe especificar el elemento de la matriz que desea eliminar.


Fusionar arreglos en PostgreSQL

Puede fusionar dos matrices en PostgreSQL usando array_cat función

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

En array_cat función, puede pasar la columna de matriz o usar el objeto literal ARRAY.

¿Necesita una herramienta de informes para PostgreSQL? Ubiq facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!