"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo combinar matrices en PostgreSQL?

¿Cómo puedo combinar matrices en PostgreSQL?

Publicado el 2025-03-04
Navegar:508

How Can I Combine Arrays in PostgreSQL?

combinando matrices en PostgreSQL: una guía completa

introducción

Postgresql proporciona varios métodos para manipular las matrices. Una operación común es combinar dos matrices de igual longitud en pares de elementos. Este artículo explora diferentes enfoques para lograr esta tarea, considerando las versiones de PostgreSQL y los casos de uso específicos.

expulsando matrices para la salida de una sola dimensión

postgresql 9.5 o postgresql 9.5 introducir introducción (aglomíne de la expresión), lo que te permite la expresión de más tarde), lo que te permite la expresión de más tarde). múltiples matrices en una matriz de dimensión superior. Esta característica simplifica las tareas de combinación de matriz, eliminando la necesidad de funciones agregadas personalizadas.

seleccione Array_agg (Array [A, B]) como AB De unnest ('{a, b, c}' :: text []) como a, Desde.

SELECT array_agg(ARRAY[a, b]) AS ab
FROM unnest('{a,b,c}'::text[]) AS a, unnest('{d,e,f}'::text[]) AS b;

estremeciendo matrices para salida multidimensional para casos en los que necesita combinar matrices en una matriz multidimensional, es necesario una función de agregado personalizado. Devuelve set de cualquier lenguaje de ARRAY SQL como $ func $ Seleccione Array [Array [A, B]] De unnest ($ 1) como unnest1 (a, b); $ func $;

seleccione Array_agg_Mult (Array [Array [A, B]]) como AB De unnest ('{{a, b, c}' :: text []) como a, unnest ('{d, e, f}' :: text []) como b;

SELECT ARRAY[a, b] AS ab
FROM unnest('{a,b,c}'::text[], '{d,e,f}'::text[])
AS tmp(a, b);

La siguiente función proporciona un enfoque generalizado para zips de cualquier tipo de tipo:

crea o reemplaza o reemplaza la función de la función (&&], todos los que proporciona un enfoque generalizado a las primas de Zipping Arrays de cualquier tipo:

crea o reemplaza o reemplazan la función (&&&], todos los que se produce un enfoque generalizado para encerrar a los Arrays de cualquier tipo:

[&] crea o reemplaza o reemplazan la función de la función (&&]. Devuelve set de cualquier lenguaje de ARRAY SQL como $ func $ Seleccione Array_agg_Mult (Array [Array [A, B]]) De Unnest ($ 1) como Unnest1 (A, B) Únase a Unnest ($ 2) como unnest2 (a, b) En verdad; $ func $;
CREATE OR REPLACE FUNCTION array_agg_mult(anyarray)
RETURNS SETOF anyarray LANGUAGE SQL AS
$func$
  SELECT ARRAY[ARRAY[a, b]]
  FROM unnest($1) AS unnest1(a, b);
$func$;
escenarios de uso
CREATE OR REPLACE FUNCTION array_agg_mult(anyarray)
RETURNS SETOF anyarray LANGUAGE SQL AS
$func$
  SELECT ARRAY[ARRAY[a, b]]
  FROM unnest($1) AS unnest1(a, b);
$func$;
Los ejemplos presentados en este artículo muestran diferentes escenarios para combinar matrices:

Simple Zipping:
CREATE OR REPLACE FUNCTION zip(anyarray, anyarray)
RETURNS SETOF anyarray LANGUAGE SQL AS
$func$
  SELECT array_agg_mult(ARRAY[ARRAY[a, b]])
  FROM unnest($1) AS unnest1(a, b)
  JOIN unnest($2) AS unnest2(a, b)
    ON true;
$func$;

multidimensional Zipping:

combinando matrices en una matriz de 2-dimensional.

  • generalizado: combinando matrices de cualquier tipo y devolviendo un conjunto de Arrays. Proporciona múltiples opciones para combinar matrices, dependiendo de la versión y el formato de salida deseado. Este artículo ha cubierto de manera integral los enfoques disponibles, lo que le permite seleccionar el método más adecuado para sus necesidades específicas.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3