Ce face concat, concat_ws și ||
Operatorul || este modul standard SQL de a lipi texte: 'Ana' || ' ' || 'Pop'. Dacă una dintre valori este NULL, tot rezultatul devine NULL.
concat() lipește oricâte valori și tratează NULL ca text gol. concat_ws() (with separator) pune separatorul dat între valori și sare complet peste cele NULL, deci nu rămân separatori dubli.
Ambele funcții primesc orice tip (numere, date) și îl transformă automat în text.
Parametri
| Parametru | Descriere |
|---|---|
separator |
Pentru concat_ws: textul pus între valori, de exemplu ', '. |
val1, val2, ... |
Valorile de lipit, de orice tip. |
Ce returnează
Un text. concat și concat_ws nu returnează NULL din cauza unei valori lipsă (doar concat_ws cu separator NULL).
Exemple
Exemplul 1: Diferența la valori NULL
Al doilea prenume lipsește (NULL). psql afișează NULL ca o celulă goală.
SELECT 'Ana' || ' ' || NULL || 'Pop' AS cu_operator,
concat('Ana', ' ', NULL, 'Pop') AS cu_concat;
Rezultat în psql
cu_operator | cu_concat
-------------+-----------
| Ana Pop
(1 row)
Exemplul 2: Adresă completă fără virgule în plus
SELECT concat_ws(', ', strada, numar, oras, judet) AS adresa
FROM adrese;
Rezultat în psql
adresa
---------------------------------
Str. Lăpușneanu, 12, Iași, Iași
Bd. Eroilor, Cluj-Napoca, Cluj
(2 rows)
Exemplul 3: Numere și date în text
SELECT concat('Comanda #', 1042, ' din ', date '2026-10-25', ': ', 149.90, ' lei') AS mesaj;
Rezultat în psql
mesaj
------------------------------------------
Comanda #1042 din 2026-10-25: 149.90 lei
(1 row)
Greșeli frecvente
- Construiești nume complete cu
||și unii clienți apar cu numele gol, pentru că o coloană eraNULL. Foloseșteconcat_wssaucoalesce. - Folosești
+pentru texte, ca în alte limbaje: în PostgreSQL'a' + 'b'dă eroare (operator is not uniquesauoperator does not exist).
Comenzi înrudite
format: Construiește un text dintr-un șablon cu %s, %I și %L. Este modul sigur de a crea SQL dinamic în PL/pgSQL.string_agg: Funcție de agregare care unește valorile text ale unui grup într-un singur text, cu separatorul ales și în ordinea dorită.split_part și string_to_array: split_part returnează bucata n dintr-un text împărțit după separator; string_to_array returnează toate bucățile ca tablou.