Проблем:
Искате да разделите низ в 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 .