9.18.
Funciones y operadores de matriz
La Tabla 9-42 muestra los operadores disponibles para los tipos de matriz.
Tabla 9-42. Operadores de matriz
Operador Descripción Ejemplo Resultado
ARRAY[1.1,2.1,3.1]::int[] =
= igual ARRAY[1,2,3]
t
<> no es igual ARRAY[1,2,3] <> ARRAY[1,2,4] t
< menos que ARRAY[1,2,3] < ARRAY[1,2,4] t
> mas grande que MATRIZ[1,4,3] > MATRIZ[1,2,4] t
<= menor o igual ARRAY[1,2,3] <= ARRAY[1,2,3] t
>= mayor que o igual ARRAY[1,4,3] >= ARRAY[1,4,3] t
@> contiene ARRAY[1,4,3] @> ARRAY[3,1] t
<@ está contenido por ARRAY[2,7] <@ ARRAY[1,7,4,2,6] t
&&
superponerse (tener elementos en MATRIZ[1,4,3] && MATRIZ[2,1] t
común)
|| concatenación de matriz a matriz MATRIZ[1,2,3] || MATRIZ[4,5,6] {1,2,3,4,5,6}
MATRIZ[1,2,3] || MATRIZ[[4,5,6],
|| concatenación de matriz a matriz [7,8,9]]
{{1,2,3},{4,5,6},{7,8,9}}
|| concatenación de elemento a matriz 3 || MATRIZ[4,5,6] {3,4,5,6}
Operador Descripción Ejemplo Resultado
|| concatenación de matriz a elemento ARRAY[4,5,6] || 7 {4,5,6,7}
Las comparaciones de matrices comparan el contenido de la matriz elemento por elemento, utilizando la función de
comparación de árbol B predeterminada para el tipo de datos del elemento. En matrices multidimensionales, los
elementos se visitan en orden de fila principal (el último subíndice varía más rápidamente). Si el contenido de dos
matrices es igual pero la dimensionalidad es diferente, la primera diferencia en la información de dimensionalidad
determina el orden de clasificación. (Este es un cambio con respecto a las versiones de PostgreSQL anteriores a la
8.2: las versiones anteriores afirmarían que dos matrices con el mismo contenido eran iguales, incluso si el número
de dimensiones o rangos de subíndices fueran diferentes).
Consulte la Sección 8.15 para obtener más detalles sobre el comportamiento del operador de matriz.
La Tabla 9-43 muestra las funciones disponibles para usar con tipos de matriz. Consulte la Sección 8.15 para
obtener más información y ejemplos del uso de estas funciones.
Tabla 9-43. Funciones de matriz
Función Tipo de devolución Descripción Ejemplo Resultado
array_append( cualquier
cualquier matriz
agregar un elemento al matriz_append(ARRAY[1,2
{1,2,3}
matriz , cualquier elemento ) final de una matriz ], 3)
array_cat( cualquier array_cat(ARRAY[1,2,3],
matriz , cualquier matriz )
cualquier matriz concatenar dos matrices ARRAY[4,5])
{1,2,3,4,5}
array_ndims( cualquier
En t
devuelve el número de array_ndims(ARRAY[[1,2,
2
matriz ) dimensiones de la matriz 3], [4,5,6]])
array_dims( cualquier texto devuelve una array_dims(ARRAY[[1,2,3 [1:2][1:3]
Función Tipo de devolución Descripción Ejemplo Resultado
representación de texto
matriz ) de las dimensiones de la ], [4,5,6]])
matriz
devuelve una matriz
inicializada con el valor y
array_fill( cualquier las dimensiones
elemento , int[] , array_fill(7, ARRAY[3], [2:4]={7,7,
cualquier matriz proporcionados, ARRAY[2]) 7}
[ , int[] ]) opcionalmente con
límites inferiores
distintos de 1
devuelve la longitud de la
array_length( cualquier longitud_matriz(matriz[
matriz , int )
En t dimensión de la matriz 1,2,3], 1)
3
solicitada
devuelve el límite
array_lower( cualquier array_lower('[0:2]={1,2
matriz , int )
En t inferior de la dimensión ,3}'::int[], 1)
0
de la matriz solicitada
array_prepend( cualquier
cualquier matriz
agregar un elemento al array_prepend(1,
{1,2,3}
elemento , cualquier matriz ) comienzo de una matriz ARRAY[2,3])
concatena elementos de
array_to_string( cualquier
la matriz utilizando el array_to_string(ARRAY[1
matriz , texto [ , texto ])
texto delimitador , 2, 3, NULL, 5], ',', 1,2,3,*,5
proporcionado y una '*')
cadena nula opcional
array_upper( cualquier En t devuelve el límite matriz_superior(ARRAY[1 4
matriz , int ) ,8,3,7], 1)
Función Tipo de devolución Descripción Ejemplo Resultado
superior de la dimensión
de la matriz solicitada
divide la cadena en
string_to_array( texto , text
elementos de la matriz
string_to_array('xx~^~y {xx,NULL,zz
o [ , texto ])
texto[] utilizando el delimitador y~^~zz', '~^~', 'yy') }
proporcionado y una
cadena nula opcional
conjunto de 1
unnest( cualquier matriz ) cualquier
expandir una matriz a un no anidado(ARRAY[1,2]) 2
elemento conjunto de filas
(2 filas)
En string_to_array, si el parámetro delimitador es NULL, cada carácter de la cadena de entrada se convertirá en
un elemento separado en la matriz resultante. Si el delimitador es una cadena vacía, entonces toda la cadena de
entrada se devuelve como una matriz de un elemento. De lo contrario, la cadena de entrada se divide cada vez que
aparece la cadena delimitadora.
En string_to_array, si se omite el parámetro de cadena nula o es NULL, ninguna de las subcadenas de la entrada
será reemplazada por NULL. En array_to_string, si se omite el parámetro de cadena nula o es NULL, cualquier
elemento nulo en la matriz simplemente se omite y no se representa en la cadena de salida.
Nota: Existen dos diferencias en el comportamiento de las string_to_arrayversiones anteriores a la 9.1
de PostgreSQL . Primero, devolverá una matriz vacía (elemento cero) en lugar de NULL cuando la cadena de entrada
tenga una longitud cero. En segundo lugar, si la cadena delimitadora es NULL, la función divide la entrada en
caracteres individuales, en lugar de devolver NULL como antes.