【问题标题】:split string inside column into new columns将列内的字符串拆分为新列
【发布时间】:2020-06-10 10:53:59
【问题描述】:

正如您在下图中所见,我有一列包含长度不同的字符串。我想将它们分成 3 个新列,然后删除原来的列。

例如最后应该是这样的:

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

在第一部分和第二部分之间,斜线没有空格,但在最后一部分之前有两个。

感谢您的帮助。

【问题讨论】:

    标签: sql regex postgresql split


    【解决方案1】:
    //添加3个新列(PLZ,区域,名称) alter table mytable add column PLZ varchar(100), add column Area varchar(100), 添加列名 varchar(100); update mytable set PLZ = split_part(name,'/','1'), Area = trim(都来自 split_part(name,'/','2')), Name = trim(都来自 split_part(name,'/','3')); //删除原始列(名称) 更改表 mytable 删除名称;

    【讨论】:

    • 成功了,但我没有在最后删除表格,我删除了列
    • 最后没掉表,我掉了列
    【解决方案2】:

    你可以使用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*' 描述了一个可选用空格包围的斜线。

    【讨论】:

    • 谢谢!它只是一个选择而不是更改表,但它帮助我了解了我需要什么
    猜你喜欢
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 2019-04-16
    • 2020-01-19
    相关资源
    最近更新 更多