Масиви й серіїлише PostgreSQL

ARRAY_TO_STRING

Склеює елементи масиву в один рядок через роздільник.

Синтаксис

ARRAY_TO_STRING(<масив>, <роздільник>)
ARRAY_TO_STRING(<масив>, <роздільник>, <замість NULL>)

Протилежність STRING_TO_ARRAY: з масиву робить текст. NULL-елементи за замовчуванням пропускає, а третій аргумент задає, чим їх замінити. Схоже на STRING_AGG, але працює з готовим масивом в одному рядку, а не збирає значення з багатьох рядків.

Дані для прикладів

employees

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

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Масив — у рядок
SELECT ARRAY_TO_STRING(ARRAY['sql', 'postgres', 'database'], ', ') AS tags;
tags
sql, postgres, database
NULL: пропустити чи замінити
SELECT ARRAY_TO_STRING(ARRAY['Emma', NULL, 'Liam'], ', ') AS skipped,
ARRAY_TO_STRING(ARRAY['Emma', NULL, 'Liam'], ', ', '—') AS replaced;
skippedreplaced
Emma, LiamEmma, —, Liam
Телефони кожного відділу
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 мовчки пропустив би людей без телефону, а тут видно, що в когось його нема.

Зверни увагу

NULL-елементи мовчки зникають разом зі слідом того, що значення бракувало. Потрібно бачити пропуски — передай третій аргумент.

Роздільник обов'язковий: ARRAY_TO_STRING(ARRAY['a']) дасть помилку function array_to_string(text[]) does not exist. Без роздільника — ARRAY_TO_STRING(<масив>, '').

Схожі функції