将列中的字符串拆分为新列

j8yoct9x  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(400)

正如你在下面的图片中看到的,我有一个列,里面有不同长度的字符串。我想把他们分成3个新的栏目,这样做后删除原来的。

例如,最后应该是这样的:

--------------------------------------------------------------------
PLZ (Col1)         Area (Col2)               Name (Col3)
019333             Ostallgäu                 mtb-auerberg-marathon
013389             Gemeinde Schleching       Mountainbikeweg zur Daiseralm
...                ...                       ...

在第一部分和第二部分之间,斜杠没有空格,但在最后一部分之前有两个空格。
谢谢你的帮助。

3ks5zfa0

3ks5zfa01#

//add 3 new columns(PLZ, Area, Name)
    alter table mytable add column PLZ varchar(100), add column Area 
    varchar(100), add column Name varchar(100);

    update mytable set PLZ = split_part(name,'/','1'), Area = trim(both from 
    split_part(name,'/','2')), Name = trim(both from split_part(name,'/','3'));

    //delete original column (name)
    alter table mytable drop name;
ao218c7q

ao218c7q2#

你可以用 regexp_split_to_array() :

select
    ar[1] as plz,
    ar[2] as area,
    ar[3] as name
from mytable t
cross join lateral (select regexp_split_to_array(col, E'\\s*/\\s*') ar) x

分裂模式 '\\s*/\\s*' 描述用空格包围的斜线选项。

相关问题