PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да разделите низ в PostgreSQL

Проблем:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да имате пълна офлайн функционалност в уеб приложение с база данни PostgreSQL?

  2. Как да промените база данни на postgresql със Symfony 2.0?

  3. Как да използвам LoggingConnection на Psycopg2?

  4. Как да коригирам грешките при несъответствие на версията pg_dump?

  5. процентили от данни на хистограмата