Ce face split_part și string_to_array
split_part('ana.pop@exemplu.ro', '@', 2) împarte textul după @ și returnează a doua bucată. Numărarea începe de la 1. Dacă bucata nu există, rezultatul este un text gol, nu NULL.
Din PostgreSQL 14, n poate fi negativ: -1 este ultima bucată, -2 penultima.
string_to_array returnează toate bucățile într-un tablou text[]. Împreună cu unnest transformă o listă dintr-o celulă în rânduri separate.
Parametri
| Parametru | Descriere |
|---|---|
text |
Textul de împărțit. |
separator |
Textul după care se împarte (nu expresie regulată). |
n |
Numărul bucății: 1 = prima, -1 = ultima (PostgreSQL 14+). |
Ce returnează
split_part: text. string_to_array: text[].
Exemple
Exemplul 1: Domeniul din adresa de email
SELECT email, split_part(email, '@', 2) AS domeniu
FROM clienti;
Rezultat în psql
email | domeniu
--------------------+------------
ana.pop@exemplu.ro | exemplu.ro
mihai@firma.com | firma.com
(2 rows)
Exemplul 2: Ultima parte dintr-o cale
SELECT split_part('/invata/postgresql/split-part', '/', -1) AS pagina,
split_part('/invata/postgresql/split-part', '/', 2) AS sectiune;
Rezultat în psql
pagina | sectiune
------------+----------
split-part | invata
(1 row)
Exemplul 3: Etichete dintr-o listă, ca rânduri separate
SELECT string_to_array('php,sql,postgresql', ',') AS tablou;
SELECT unnest(string_to_array('php,sql,postgresql', ',')) AS eticheta;
Rezultat în psql
tablou
----------------------
{php,sql,postgresql}
(1 row)
eticheta
------------
php
sql
postgresql
(3 rows)
Greșeli frecvente
- Numeri bucățile de la 0: prima este
1.split_part(..., 0)dă eroarefield position must not be zero. - Te aștepți la
NULLcând bucata nu există și scriiWHERE split_part(...) IS NULL. Rezultatul este text gol: verifică= ''.
Comenzi înrudite
regexp_replace: Înlocuiește într-un text porțiunile care se potrivesc unei expresii regulate. Cu flagul ‘g’ le înlocuiește pe toate.concat, concat_ws și ||: Lipesc mai multe texte într-unul. || dă NULL dacă o parte este NULL, concat și concat_ws ignoră valorile NULL.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ă.