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

STRING_TO_ARRAY

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

Синтаксис

STRING_TO_ARRAY(<текст>, <роздільник>)
STRING_TO_ARRAY(<текст>, <роздільник>, <текст для NULL>)

Як SPLIT_PART, але повертає одразу всі частини — масивом. З ним далі працюють як зі списком: беруть елемент за номером, рахують кількість через CARDINALITY або розгортають у рядки через UNNEST.

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

employees

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

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

Рядок — у масив
SELECT STRING_TO_ARRAY('sql,postgres,database', ',') AS tags;
tags
["sql","postgres","database"]
Елемент за номером і кількість
SELECT (STRING_TO_ARRAY('sql,postgres,database', ','))[2] AS second_tag,
CARDINALITY(STRING_TO_ARRAY('sql,postgres,database', ',')) AS tag_count;
second_tagtag_count
postgres3
Частини телефону
SELECT name,
STRING_TO_ARRAY(phone, ' ') AS phone_parts
FROM employees;
namephone_parts
Emma["+44","7700","900123"]
LiamNULL
Olivia["+44","7700","900456"]
Noah["+44","7700","900789"]
SophiaNULL

Зверни увагу

Пробіли біля роздільника лишаються в частинах: STRING_TO_ARRAY('a, b', ',') дає a і b. Зроби роздільником ', ' — тоді вийде a і b.

Порожній рядок дає порожній масив, а NULL — NULL.

Третій аргумент каже, який текст вважати NULL: STRING_TO_ARRAY('a,,b', ',', '') дасть масив a, NULL, b.

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