Разделить данные столбца через запятую на несколько столбцов (переменный размер) - PullRequest
0 голосов
/ 04 июля 2018

Нужна помощь в разбиении данных столбца (строки) в Postgres на несколько фиктивных столбцов, таких как:

---------column-------
data1;data2;data3 -
data1;data3       -
data1             -

в

- Col1 ---- Col2 ---- Col3
   1    |    1    |   1
   1    |    0    |   1
   1    |    0    |   0

Я знаю максимальное количество столбцов, чтобы можно было предварительно установить фиктивные столбцы. Нужно ли делать какой-то цикл for?

JP * * +1010

1 Ответ

0 голосов
/ 04 июля 2018

Вы можете использовать split_part ():

select split_part(col, ';', 1) as col1, 
       split_part(col, ';', 2) as col2, 
       split_part(col, ';', 3) as col1
from the_table;

Или чуть более эффективно, потому что разбиение выполняется только один раз в строке:

select c[1] as col1, 
       c[2] as col2, 
       c[3] as col3
from (
  select string_to_array(col, ';') as c
  from the_table
) t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...