Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

432
Visualizações
Postgres agrega o establece cada elemento (si no existe) de una matriz en una columna de matriz

Si tengo

 select arr_str from tabl1; -> {'a', 'b'}

entonces, ¿cómo agrego esta matriz {'b','c','d'} a la columna arr_str para obtener el siguiente resultado?

 select arr_str from tabl1; -> {'a', 'b', 'c', 'd'}

No quiero SELECCIONAR la columna y crear una nueva matriz para actualizar. Solo quiero usar la consulta ACTUALIZAR .

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Asumiré que arr_str es del tipo text[] (aunque no usó el formato adecuado para ellos, por lo que puedo estar equivocado; si ese es el caso, deberá convertir su valor en text[] ).

Utilice la siguiente declaración, si desea eliminar las duplicaciones, que ya están presentes en la columna arr_str :

 update tabl1 set arr_str = (select array_agg(distinct e) from unnest(arr_str || '{b,c,d}') e) where not arr_str @> '{b,c,d}'

O utilice el siguiente cuando desee conservar las duplicaciones existentes:

 update tabl1 set arr_str = arr_str || array(select unnest('{b,c,d}'::text[]) except select unnest(arr_str)) where not arr_str @> '{b,c,d}'

Ambas declaraciones no tocarán las filas, que no se verán afectadas de todos modos (observe el where not arr_str @> '{b,c,d}' ). Esta suele ser la mejor práctica, y casi siempre se recomienda, cuando se trata de factores desencadenantes.

http://rextester.com/GKS7382

over 4 years ago · Santiago Trujillo Relatório

0

Con la instalación predeterminada de pg, puede fusionar dos matrices con || operador:

 select arr_str || '{a, b}' from tabl1

Pero en ese caso obtendrá duplicados.

Para evitarlos, puede anular la matriz en un conjunto de filas y distinguirlo:

 select ARRAY(SELECT DISTINCT UNNEST(arr_str || '{a,b,c}')) from tabl1

Si sus valores son enteros, hay una forma más elegante de obtener valores de matriz uniq con el módulo de contribución intarray y la función uniq(): https://www.postgresql.org/docs/current/static/intarray.html

Puede agregar estas funciones de matriz de enteros usando:

 CREATE EXTENSION intarray
over 4 years ago · Santiago Trujillo Relatório

0

puede concatenar matrices y luego agregar valores distintos:

 t=# with a as (select unnest('{a, b}'::text[] || '{b,c,d}'::text[]) a) select array_agg(distinct a) from a; array_agg ----------- {a,b,c,d} (1 row) Time: 1.312 ms
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda