Todos los productos
Search
Centro de documentos

Hologres:Array functions

Última actualización: Sep 05, 2026

Hologres es compatible con PostgreSQL y admite las funciones estándar de arreglos de PostgreSQL, además de varias extensiones para operaciones de conjuntos y agregación. Este tema describe la sintaxis, los parámetros y ejemplos de cada función.

Limitaciones

Las funciones array_max, array_min, array_contains, array_except, array_distinct y array_union no admiten consultas constantes. Por ejemplo, SELECT array_max(ARRAY[-2, NULL, -3, -12, -7]); no es compatible; utilice columnas de tipo arreglo de una tabla en su lugar.

Referencia de funciones

Función

Sintaxis

Valor devuelto

Descripción

ARRAY_AGG

array_agg(anyelement)

ARRAY

Agrega valores de columna de varias filas en un arreglo.

ARRAY_APPEND

array_append(anyarray, anyelement)

ARRAY

Añade un elemento al final de un arreglo.

ARRAY_CAT

array_cat(anyarray, anyarray)

ARRAY

Concatena dos arreglos.

ARRAY_CONTAINS

array_contains(array, target_value)

BOOLEAN

Comprueba si un arreglo contiene un valor específico.

ARRAY_DIMS

array_dims(anyarray)

TEXT

Devuelve los límites de dimensión de un arreglo como una cadena de texto.

ARRAY_DISTINCT

array_distinct(array)

ARRAY

Elimina los elementos duplicados de un arreglo.

ARRAY_EXCEPT

array_except(array1, array2)

ARRAY

Devuelve los elementos de array1 que no están presentes en array2.

ARRAY_LENGTH

array_length(anyarray, int)

INT

Devuelve el número de elementos en una dimensión específica del arreglo.

ARRAY_LOWER

array_lower(anyarray, int)

INT

Devuelve el límite inferior de una dimensión específica del arreglo.

ARRAY_MAX

array_max(array)

INT

Devuelve el valor máximo de los elementos y omite los valores NULL.

ARRAY_MIN

array_min(array)

INT

Devuelve el valor mínimo de los elementos.

ARRAY_NDIMS

array_ndims(anyarray)

INT

Devuelve el número de dimensiones de un arreglo.

ARRAY_POSITIONS

array_positions(anyarray, anyelement)

ARRAY

Devuelve los subíndices de todas las apariciones de un elemento en un arreglo unidimensional.

ARRAY_PREPEND

array_prepend(anyelement, anyarray)

ARRAY

Agrega un elemento al inicio de un arreglo.

ARRAY_REMOVE

array_remove(anyarray, anyelement)

ARRAY

Elimina todos los elementos iguales a un valor especificado de un arreglo unidimensional.

ARRAY_SORT

array_sort(anyarray)

ARRAY

Ordena los elementos de un arreglo en orden ascendente.

ARRAY_TO_STRING

array_to_string(anyarray, text[, text])

TEXT

Concatena los elementos del arreglo mediante un separador, con reemplazo opcional de valores NULL.

ARRAY_UNION

array_union(array1, array2)

ARRAY

Combina dos arreglos y elimina los duplicados.

ARRAY_UPPER

array_upper(anyarray, int)

INT

Devuelve el límite superior de una dimensión específica del arreglo.

REGEXP_MATCH

regexp_match(text, text)

ARRAY

Compara una cadena con una expresión regular y devuelve las subcadenas capturadas.

REGEXP_SPLIT_TO_ARRAY

regexp_split_to_array(text, text)

ARRAY

Divide una cadena según una expresión regular y devuelve las partes como un arreglo.

UNNEST

unnest(anyarray)

setof TEXT

Expande cada elemento del arreglo en una fila independiente.

Funciones de arreglos

ARRAY_TO_STRING

array_to_string(anyarray, text[, text]) → TEXT

Concatena los elementos del arreglo mediante un separador especificado. El tercer argumento opcional reemplaza los elementos NULL; si se omite, los valores NULL se ignoran.

Parámetros

Parámetro

Obligatorio

Descripción

anyarray

Sí

El arreglo cuyos elementos se van a concatenar.

text (2.º)

Sí

La cadena separadora.

text (3.º)

No

La cadena que se usará en lugar de los valores NULL.

Ejemplo

-- Result: 1,2,3
SELECT array_to_string(ARRAY[1, 2, 3], ',');

ARRAY_AGG

array_agg(anyelement) → ARRAY

Agrega valores de columna de varias filas en un solo arreglo. Se admiten dos formas de sintaxis.

Sintaxis 1: Agregación básica

array_agg(anyelement)

Sintaxis 2: Agregación con ordenamiento y filtrado

array_agg(expression [order_by_clause]) [FILTER (WHERE filter_clause)]

Parámetros

Parámetro

Obligatorio

Descripción

anyelement / expression

Sí

La columna o expresión que se va a agregar.

order_by_clause

No

Cláusula ORDER BY que controla el orden de los elementos en el arreglo resultante.

filter_clause

No

Condición para la cláusula FILTER. Solo se incluyen las filas que cumplen esta condición.

Notas de uso

  • Compatible con Hologres V1.3 y versiones posteriores: DECIMAL, DATE, TIMESTAMP, TIMESTAMPTZ.

  • No compatible: JSON, JSONB, TIMETZ, INTERVAL, INET, OID, UUID, ARRAY.

  • La cláusula FILTER requiere Hologres V1.3 o posterior. Para actualizar su instancia, consulte Instance upgradation o How do I get more online support?.

Ejemplos

Agregación básica:

CREATE TABLE test_array_agg_int (
    c1 int
);

INSERT INTO test_array_agg_int
    VALUES (1), (2);

SELECT array_agg(c1)
FROM test_array_agg_int;

Resultado:

 array_agg
-----------
 {2,1}
(1 row)

Agregación con FILTER (requiere Hologres V1.3+):

SELECT array_agg(c1) FILTER (WHERE c1 > 1)
FROM test_array_agg_int;

Resultado:

 array_agg
-----------
 {2}
(1 row)

ARRAY_APPEND

array_append(anyarray, anyelement) → ARRAY

Añade un elemento al final de un arreglo.

Parámetros

Parámetro

Obligatorio

Descripción

anyarray

Sí

El arreglo de origen.

anyelement

Sí

El elemento que se va a añadir.

Ejemplo

-- Result: {1,2,3}
SELECT array_append(ARRAY[1,2], 3);

ARRAY_CAT

array_cat(anyarray, anyarray) → ARRAY

Concatena dos arreglos del mismo tipo de elemento.

Parámetros

Parámetro

Obligatorio

Descripción

anyarray (1.º)

Sí

El primer arreglo.

anyarray (2.º)

Sí

El segundo arreglo.

Ejemplo

-- Result: {1,2,3,4,5}
SELECT array_cat(ARRAY[1,2,3], ARRAY[4,5]);

ARRAY_NDIMS

array_ndims(anyarray) → INT

Devuelve el número de dimensiones de un arreglo.

Parámetros

Parámetro

Obligatorio

Descripción

anyarray

Sí

El arreglo que se va a inspeccionar.

Ejemplo

-- Result: 2
SELECT array_ndims(ARRAY[[1,2,3], [4,5,6]]);

ARRAY_DIMS

array_dims(anyarray) → TEXT

Devuelve los límites de dimensión de un arreglo como una cadena de texto, donde se muestra el límite inferior y superior de cada dimensión.

Parámetros

Parámetro

Obligatorio

Descripción

anyarray

Sí

El arreglo que se va a inspeccionar.

Ejemplo

-- Result: [1:2][1:3]
SELECT array_dims(ARRAY[[1,2,3], [4,5,6]]);

ARRAY_LENGTH

array_length(anyarray, int) → INT

Devuelve el número de elementos en la dimensión especificada de un arreglo. Las dimensiones se numeran a partir de 1.

Parámetros

Parámetro

Obligatorio

Descripción

anyarray

Sí

El arreglo que se va a inspeccionar.

int

Sí

El número de dimensión (base 1).

Ejemplo

-- Result: 3
SELECT array_length(ARRAY[1,2,3], 1);

ARRAY_LOWER

array_lower(anyarray, int) → INT

Devuelve el límite inferior de la dimensión del arreglo especificada. Para los arreglos estándar, este valor es 1. En el caso de arreglos con un límite inferior personalizado (como '[0:2]={1,2,3}'::int[]), se devuelve el límite inferior real. Las dimensiones se numeran a partir de 1.

Parámetros

Parámetro

Obligatorio

Descripción

anyarray

Sí

El arreglo que se va a inspeccionar.

int

Sí

El número de dimensión (base 1).

Ejemplo

-- Result: 0
SELECT array_lower('[0:2]={1,2,3}'::int[], 1);

ARRAY_POSITIONS

array_positions(anyarray, anyelement) → ARRAY

Devuelve los subíndices de un elemento especificado en un arreglo unidimensional.

Parámetros

Parámetro

Obligatorio

Descripción

anyarray

Sí

El arreglo unidimensional donde se realizará la búsqueda.

anyelement

Sí

El elemento que se va a buscar.

Ejemplo

-- Result: {1,2,4}
SELECT array_positions(ARRAY['A','A','B','A'], 'A');

ARRAY_PREPEND

array_prepend(anyelement, anyarray) → ARRAY

Agrega un elemento al inicio de un arreglo.

Parámetros

Parámetro

Obligatorio

Descripción

anyelement

Sí

El elemento que se va a agregar al inicio.

anyarray

Sí

El arreglo de origen.

Ejemplo

-- Result: {1,2,3}
SELECT array_prepend(1, ARRAY[2,3]);

ARRAY_REMOVE

array_remove(anyarray, anyelement) → ARRAY

Elimina todos los elementos iguales al valor especificado de un arreglo unidimensional.

Parámetros

Parámetro

Obligatorio

Descripción

anyarray

Sí

El arreglo unidimensional que se va a procesar.

anyelement

Sí

El valor que se va a eliminar. Se quitan todos los elementos coincidentes.

Ejemplo

-- Result: {1,3}
SELECT array_remove(ARRAY[1,2,3,2], 2);

ARRAY_SORT

array_sort(anyarray) → ARRAY

Ordena los elementos de un arreglo en orden ascendente.

Notas de uso

Versión de Hologres

Tipos de arreglo compatibles

V1.1.46+

Arreglos TEXT (se convierten a INT8 para ordenarlos; se devuelve el arreglo TEXT ordenado)

V1.3.18+

Arreglos INT4, INT8, FLOAT4, FLOAT8, BOOLEAN y TEXT. Los arreglos TEXT se ordenan lexicográficamente.

Parámetros

Parámetro

Obligatorio

Descripción

anyarray

Sí

El arreglo que se va a ordenar.

Ejemplo

-- Result: {1,1,2,3}
SELECT array_sort(ARRAY[1,3,2,1]);

ARRAY_UPPER

array_upper(anyarray, int) → INT

Devuelve el límite superior de la dimensión del arreglo especificada. Para un arreglo estándar de una dimensión, esto equivale al número de elementos. Las dimensiones se numeran a partir de 1.

Parámetros

Parámetro

Obligatorio

Descripción

anyarray

Sí

El arreglo que se va a inspeccionar.

int

Sí

El número de dimensión (base 1).

Ejemplo

-- Result: 4
SELECT array_upper(ARRAY[1,8,3,7], 1);

UNNEST

unnest(anyarray) → setof TEXT

Expande cada elemento de un arreglo en una fila independiente. Utilice esta función en la cláusula FROM o como una función que devuelve conjuntos.

Parámetros

Parámetro

Obligatorio

Descripción

anyarray

Sí

El arreglo que se va a expandir.

Ejemplo

SELECT unnest(ARRAY[1,2]);

Resultado:

unnest
------
1
2
(2 rows)

ARRAY_MAX

array_max(array) → INT

Devuelve el valor máximo de los elementos en un arreglo. Los valores NULL se omiten durante el cálculo. Requiere Hologres V1.3.19 o posterior.

array_max no admite consultas constantes; utilice una columna de tabla como entrada.

Parámetros

Parámetro

Obligatorio

Descripción

array

Sí

El arreglo que se va a evaluar. Los valores NULL se omiten.

Ejemplo

CREATE TABLE test_array_max_int (
    c1 int[]
);

INSERT INTO test_array_max_int
    VALUES (NULL), (ARRAY[-2, NULL, -3, -12, -7]);

SELECT c1, array_max(c1)
FROM test_array_max_int;

Resultado:

        c1        | array_max
------------------+-----------
 \N               | \N
 {-2,0,-3,-12,-7} |         0
(2 rows)

ARRAY_MIN

array_min(array) → INT

Devuelve el valor mínimo de los elementos en un arreglo. Requiere Hologres V1.3.19 o posterior.

array_min no admite consultas constantes; utilice una columna de tabla como entrada.

Parámetros

Parámetro

Obligatorio

Descripción

array

Sí

El arreglo que se va a evaluar.

Ejemplo

CREATE TABLE test_array_min_text (
    c1 text[]
);

INSERT INTO test_array_min_text
    VALUES (NULL), (ARRAY['hello', 'holo', 'blackhole', 'array']);

SELECT c1, array_min(c1)
FROM test_array_min_text;

Resultado:

              c1              | array_min
------------------------------+-----------
 \N                           | \N
 {hello,holo,blackhole,array} | array
(2 rows)

ARRAY_CONTAINS

array_contains(array, target_value) → BOOLEAN

Comprueba si un arreglo contiene un valor específico. Devuelve true si lo encuentra y false en caso contrario. Requiere Hologres V1.3.19 o posterior.

array_contains no admite consultas constantes; utilice una columna de tabla como entrada.

Parámetros

Parámetro

Obligatorio

Descripción

array

Sí

El arreglo donde se realizará la búsqueda.

target_value

Sí

El valor que se va a buscar.

Ejemplo

CREATE TABLE test_array_contains_text (
    c1 text[],
    c2 text
);

INSERT INTO test_array_contains_text
    VALUES (ARRAY[NULL, 'cs', 'holo', 'sql', 'a', NULL, ''], 'holo'),
           (ARRAY['holo', 'array', 'FE', 'l', NULL, ''], 'function');

SELECT c1, c2, array_contains(c1, c2)
FROM test_array_contains_text;

Resultado:

            c1            |    c2    | array_contains
--------------------------+----------+----------------
 {holo,array,FE,l,"",""}  | function | f
 {"",cs,holo,sql,a,"",""} | holo     | t
(2 rows)

ARRAY_EXCEPT

array_except(array1, array2) → ARRAY

Devuelve los elementos de array1 que no están presentes en array2. Requiere Hologres V1.3.19 o posterior.

array_except no admite consultas constantes; utilice columnas de tabla como entrada.

Parámetros

Parámetro

Obligatorio

Descripción

array1

Sí

El arreglo de origen.

array2

Sí

El arreglo de elementos que se excluirán de array1.

Ejemplo

CREATE TABLE test_array_except_text (
    c1 text[],
    c2 text[]
);

INSERT INTO test_array_except_text
    VALUES (ARRAY['o', 'y', 'l', 'l', NULL, ''], NULL),
           (ARRAY['holo', 'hello', 'hello', 'SQL', '', 'blackhole'], ARRAY['holo', 'SQL', NULL, 'kk']);

SELECT c1, c2, array_except(c1, c2)
FROM test_array_except_text;

Resultado:

                 c1                  |        c2        |   array_except
-------------------------------------+------------------+-------------------
 {o,y,l,l,"",""}                     |                  | {o,l,y,""}
 {holo,hello,hello,SQL,"",blackhole} | {holo,SQL,"",kk} | {blackhole,hello}
(2 rows)

ARRAY_DISTINCT

array_distinct(array) → ARRAY

Elimina los elementos duplicados de un arreglo. Requiere Hologres V1.3.19 o posterior.

array_distinct no admite consultas constantes; utilice una columna de tabla como entrada.

Parámetros

Parámetro

Obligatorio

Descripción

array

Sí

El arreglo del cual se eliminarán los duplicados.

Ejemplo

CREATE TABLE test_array_distinct_text (
    c1 text[]
);

INSERT INTO test_array_distinct_text
    VALUES (ARRAY['holo', 'hello', 'holo', 'SQL', 'SQL']),
           (ARRAY[]::text[]);

SELECT c1, array_distinct(c1)
FROM test_array_distinct_text;

Resultado:

            c1             |  array_distinct
---------------------------+------------------
 {holo,hello,holo,SQL,SQL} | {SQL,hello,holo}
 {}                        | {NULL}
(2 rows)

ARRAY_UNION

array_union(array1, array2) → ARRAY

Combina dos arreglos en uno nuevo y elimina los elementos duplicados. Requiere Hologres V1.3.19 o posterior.

array_union no admite consultas constantes; utilice columnas de tabla como entrada.

Parámetros

Parámetro

Obligatorio

Descripción

array1

Sí

El primer arreglo.

array2

Sí

El segundo arreglo. Los duplicados entre ambos arreglos se eliminan después de combinarlos.

Ejemplo

CREATE TABLE test_array_union_int (
    c1 int[],
    c2 int[]
);

INSERT INTO test_array_union_int
    VALUES (NULL, ARRAY[2, -3, 2, 7]),
           (ARRAY[2, 7, -3, 2, 7], ARRAY[12, 9, 8, 7]);

SELECT c1, c2, array_union(c1, c2)
FROM test_array_union_int;

Resultado:

      c1      |     c2     |   array_union
--------------+------------+-----------------
 \N           | {2,-3,2,7} | {2,7,-3}
 {2,7,-3,2,7} | {12,9,8,7} | {9,2,7,8,12,-3}
(2 rows)

REGEXP_MATCH

regexp_match(str TEXT, pattern TEXT) → ARRAY

Compara una cadena con una expresión regular y devuelve un arreglo con las subcadenas capturadas.

Parámetros

Parámetro

Obligatorio

Descripción

str

Sí

La cadena que se va a comparar.

pattern

Sí

La expresión regular. Utilice grupos de captura (...) para extraer subcadenas.

Ejemplo

SELECT regexp_match('foobarbequebaz', '(bar)(beque)');

Resultado:

 regexp_match
--------------
 {bar,beque}

REGEXP_SPLIT_TO_ARRAY

regexp_split_to_array(str TEXT, pattern TEXT) → ARRAY

Divide una cadena mediante un delimitador de expresión regular y devuelve las partes como un arreglo.

Parámetros

Parámetro

Obligatorio

Descripción

str

Sí

La cadena que se va a dividir.

pattern

Sí

La expresión regular que se usa como delimitador de división.

Ejemplo

CREATE TABLE interests_test (
    name text,
    intrests text
);

INSERT INTO interests_test
    VALUES ('Ava', 'singing, dancing'),
           ('Bob', 'playing football, running, painting'),
           ('Jack', 'arranging flowers, writing calligraphy, playing the piano, sleeping');

SELECT name, regexp_split_to_array(intrests, ',')
FROM interests_test;

Resultado:

name | regexp_split_to_array
----------------------------
Ava  | {singing, dancing}
Bob  | {playing football, running, painting}
Jack | {arranging flowers, writing calligraphy, playing the piano, sleeping}

Operadores

Los siguientes operadores funcionan con arreglos.

Operador

Valor devuelto

Descripción

Ejemplo

Resultado

@>

BOOLEAN

Comprueba si el arreglo izquierdo contiene todos los elementos del arreglo derecho.

SELECT ARRAY[1,2,3] @> ARRAY[1,2];

t

<@

BOOLEAN

Comprueba si el arreglo izquierdo está contenido en el arreglo derecho.

SELECT ARRAY[1,2,3] <@ ARRAY[1,2];

f

&&

BOOLEAN

Comprueba si los dos arreglos comparten algún elemento común. Hologres V1.3.37+ también admite columnas de tipo arreglo como entrada.

SELECT ARRAY[1,2,3] && ARRAY[1,2];

t

Funciones de arreglos de orden superior

Hologres V3.2 y versiones posteriores admiten funciones de arreglos de orden superior. Para obtener más información, consulte LAMBDA expressions and related functions.