Рядкилише PostgreSQL

SPLIT_PART

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

Синтаксис

SPLIT_PART(<текст>, <роздільник>, <номер>)

Розрізає текст на шматки по роздільнику й повертає шматок із вказаним номером, рахуючи з 1. Від'ємний номер рахує з кінця: -1 — остання частина. Зручно для тексту з передбачуваною будовою: домен з email, код країни з телефону, частина шляху.

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

employees

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

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

Логін і домен з email
SELECT SPLIT_PART('emma@example.com', '@', 1) AS login,
SPLIT_PART('emma@example.com', '@', 2) AS domain;
logindomain
emmaexample.com
Остання частина — від'ємним номером
SELECT SPLIT_PART('backend/api/v2', '/', -1) AS last_part;
last_part
v2
Код країни з телефону
SELECT name, phone,
SPLIT_PART(phone, ' ', 1) AS country_code
FROM employees;
namephonecountry_code
Emma+44 7700 900123+44
LiamNULLNULL
Olivia+44 7700 900456+44
Noah+44 7700 900789+44
SophiaNULLNULL

На відміну від SUBSTRING, не треба знати довжину коду: береться все до першого пробілу.

Зверни увагу

Якщо частини з таким номером нема, результат — порожній рядок '', а не NULL: SPLIT_PART('a,b', ',', 5).

Номер 0 — помилка field position must not be zero: нумерація починається з 1.

Роздільник відрізається точно, пробіли навколо лишаються: SPLIT_PART('a, b', ',', 2) дає b із пробілом на початку. Прибрати його допоможе TRIM.

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