STRING_AGG
Equivalente en MySQL:
Une los valores de un grupo de filas en una cadena con un separador.
PostgreSQL 17.9
STRING_AGG([DISTINCT] expression, delimiter [ORDER BY sort_expression [ASC | DESC] [NULLS FIRST | NULLS LAST]])- [ ]parte opcional
- a | buna de las opciones
- DISTINCT
- Unir solo los valores únicosPalabra claveOpcional
- expression
- Expresión de texto cuyos valores se unen; un número hay que convertirlo en textotext
- delimiter
- Separador entre los valorestext
- ORDER BY sort_expression [ASC | DESC] [NULLS FIRST | NULLS LAST]
- Orden de los valores; sin él, el orden es arbitrarioOpcional
- sort_expression
- Columna o expresión por la que se ordena
- ASC | DESC
- Dirección, ASC por defectoPalabra claveOpcionalASCDESC
- NULLS FIRST | NULLS LAST
- Posición de NULL, por defecto al final con ASC y al principio con DESCPalabra claveOpcionalNULLS FIRSTNULLS LAST
Valor devuelto
Cadena (text); los NULL se omiten; NULL si todos los valores son NULL
Ejemplos
Todos los nombres separados por comas
PostgreSQL 17.9
SELECT STRING_AGG(member_name, ', ')
FROM FamilyMembers;Nombres por estado en orden alfabético
PostgreSQL 17.9
SELECT status,
STRING_AGG(
member_name,
', '
ORDER BY member_name
) AS members
FROM FamilyMembers
GROUP BY status
ORDER BY status;Números con ::text y estados únicos
PostgreSQL 17.9
SELECT STRING_AGG(
member_id::text,
','
ORDER BY member_id
) AS ids,
STRING_AGG(DISTINCT status, ', ') AS statuses
FROM FamilyMembers;Detalles
Los valores tienen que ser texto: STRING_AGG(member_id, ',') provoca un error, mientras que STRING_AGG(member_id::text, ',') funciona.
Junto con DISTINCT, sort_expression tiene que coincidir con expression.