Проблем:
Искате да разделите низ в PostgreSQL.
Пример 1:
Имате изречение и искате да го разделите с интервал.
Решение 1:
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Резултатът изглежда така:
части |
---|
Това е |
и |
пример |
изречение. |
Дискусия:
За да получите всички части на изречението като елементи от масив в PostgreSQL, използвайте функцията string_to_array(text, delimiter). Текстът е текстът, който искате да разделите, а разделителят е низът (тук интервал), с който искате да разделите текста. Просто използване на string_to_array(text, delimiter)
функция:
SELECT string_to_array('It''s an example sentence.', ' ') AS parts;
ще върне следния резултат:
части |
---|
{Това е,пример,изречение.} |
SELECT unnest( string_to_array('It''s an example sentence.', ' ') ) AS parts;
Това ще създаде колона с всички части на низа, всяка в отделен ред.
Пример 2:
В sentences
таблица, има няколко изречения.
изречение |
---|
Това е първото изречение. |
А ето и другия. |
Искате да разделите изреченията с интервал.
Решение 2:
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Резултатът изглежда така:
части |
---|
Това |
е |
на |
първи |
изречение. |
И |
ето ви |
на |
други |
един. |
Дискусия:
Точно както в предишния пример, използвайте функциите string_to_array(текст, разделител) и unnest(масив). Текстът трябва да бъде името на колоната (изречение), но разделителят все още е интервалът (' '). Този път използвате данните от таблицата, така че трябва да използвате ключовата дума FROM заедно с името на таблицата.
SELECT unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Пример 3:
В sentences
таблица, има две колони:id
и sentence
.
id | изречение |
---|---|
1 | Това е първото изречение. |
2 | А ето и другия. |
Искате да разделите изреченията с интервал.
Решение 3:
SELECT id, unnest(string_to_array(sentence, ' ')) AS parts FROM sentences;
Резултатът изглежда така:
id | части |
---|---|
1 | Това |
1 | е |
1 | на |
1 | първи |
1 | изречение. |
2 | И |
2 | ето |
2 | на |
2 | други |
2 | един. |
Дискусия:
Този пример е много подобен, но вие също искате да видите id
колона. За да видите тази колона, просто я добавете към SELECT
списък и не забравяйте да включите запетаята. Ще видите идентификатора на изречението заедно с частите от изреченията в резултата. Например първото изречение е разделено на 5 части и има ID 1
. Следователно идентификаторът за всичките 5 части в резултата ще бъде 1
. Следващото изречение с идентификатор 2
, също е разделена на 5 части и всяка от тези части ще бъде показана с id = 2
.