Arrays y seriessolo PostgreSQL

ARRAY_TO_STRING

Une los elementos de un array en una sola cadena con un separador.

Sintaxis

ARRAY_TO_STRING(<array>, <separador>)
ARRAY_TO_STRING(<array>, <separador>, <en lugar de NULL>)

Lo contrario de STRING_TO_ARRAY: convierte un array en texto. Por defecto se salta los elementos NULL, y el tercer argumento indica por qué sustituirlos. Parecida a STRING_AGG, pero trabaja con un array ya hecho dentro de una fila, en lugar de reunir valores de muchas filas.

Datos para los ejemplos

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Un array convertido en cadena
SELECT ARRAY_TO_STRING(ARRAY['sql', 'postgres', 'database'], ', ') AS tags;
tags
sql, postgres, database
NULL: saltar o sustituir
SELECT ARRAY_TO_STRING(ARRAY['Emma', NULL, 'Liam'], ', ') AS skipped,
ARRAY_TO_STRING(ARRAY['Emma', NULL, 'Liam'], ', ', '—') AS replaced;
skippedreplaced
Emma, LiamEmma, —, Liam
Los teléfonos de cada departamento
SELECT department,
ARRAY_TO_STRING(ARRAY_AGG(phone ORDER BY name), '; ', 'no phone') AS phones
FROM employees
GROUP BY department
ORDER BY department;
departmentphones
backend+44 7700 900123; no phone
designno phone
frontend+44 7700 900789; +44 7700 900456

STRING_AGG se saltaría en silencio a las personas sin teléfono; aquí se ve que alguien no lo tiene.

Ten en cuenta

Los elementos NULL desaparecen en silencio, y con ellos cualquier rastro de que faltaba un valor. Si necesitas ver los huecos, pasa el tercer argumento.

El separador es obligatorio: ARRAY_TO_STRING(ARRAY['a']) da el error function array_to_string(text[]) does not exist. Sin separador: ARRAY_TO_STRING(<array>, '').