Вы можете использовать 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;