Рядки

CONCAT

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

Синтаксис

CONCAT(<значення1>, <значення2>, …)
CONCAT_WS(<роздільник>, <значення1>, <значення2>, …)

Перетворює аргументи на текст і з'єднує їх підряд. На відміну від оператора ||, NULL не «з'їдає» весь результат, а просто пропускається. CONCAT_WS сам ставить роздільник між значеннями.

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

employees

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

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

Склеїти кілька частин
SELECT CONCAT('Emma', ' ', 'Wilson') AS full_name;
full_name
Emma Wilson
Підпис для кожного працівника
SELECT CONCAT(name, ' (', department, ')') AS label
FROM employees;
label
Emma (backend)
Liam (backend)
Olivia (frontend)
Noah (frontend)
Sophia (design)
CONCAT проти || там, де NULL
SELECT name,
name || ', ' || phone AS with_pipes,
CONCAT(name, ', ', phone) AS with_concat
FROM employees;
namewith_pipeswith_concat
EmmaEmma, +44 7700 900123Emma, +44 7700 900123
LiamNULLLiam,
OliviaOlivia, +44 7700 900456Olivia, +44 7700 900456
NoahNoah, +44 7700 900789Noah, +44 7700 900789
SophiaNULLSophia,

У Liam і Sophia телефону нема: || дає NULL на весь рядок, а CONCAT просто пропускає порожнє.

Зверни увагу

CONCAT лишає роздільник і там, де значення нема: CONCAT('Liam', ', ', NULL) дає Liam, із комою в кінці. Щоб роздільник був лише між наявними значеннями, бери CONCAT_WS(', ', 'Liam', NULL) — вийде просто Liam.

Числа й дати перетворюються на текст самі, але вигляд обирає PostgreSQL. Потрібен свій, як-от 13.09.2026, — спершу TO_CHAR.

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