【问题标题】:How can I split a value with a space from into two columns in SQL?如何在 SQL 中将带有空格的值拆分为两列?
【发布时间】:2021-01-08 11:16:54
【问题描述】:

给定如下表格:

Firstname Lastname  Fullname
Null Null Elen Morales
Null Null Sasha Karl Wickens

将来我希望“全名”列不再存在,值应分为“名字”和“姓氏”。将这两个值分开的可能性是每个值的最后一个空格,因为有些名字有两个名字,这两个名字都应该转移到“名字”。

我已经尝试了一段时间,但我无法想出一个表达方式。

你对我如何解决这个问题有什么想法吗?

【问题讨论】:

    标签: sql postgresql split


    【解决方案1】:
    UPDATE
        Sometable
    SET
        Firstname = REGEXP_REPLACE(' [^ ]*$', '', Fullname),
        Lastname = REGEXP_REPLACE('.* ', '', Fullname)
    

    在上面粘贴代码时要非常小心,不要弄乱正则表达式中的空格

    【讨论】:

    • 谢谢,不知道怎么没想到。我的想法太复杂了……
    【解决方案2】:

    你可以在这里REGEXP_REPLACE

    SELECT
        REGEXP_REPLACE(Fullname, '^(.*) \S+$', '\1') AS Firstname,
        REGEXP_REPLACE(Fullname, '^.* (\S+)$', '\1') AS Lastname,
        Fullname
    FROM yourTable;
    

    如果您想实际更新您的表格,请使用:

    UPDATE yourTable
    SET
        Firstname = REGEXP_REPLACE(Fullname, '^(.*) \S+$', '\1'),
        Lastname  = REGEXP_REPLACE(Fullname, '^.* (\S+)$', '\1');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-31
      • 2020-05-19
      相关资源
      最近更新 更多