You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL 8.0.2 Redshift中拆分变体姓名为姓和名

适配多格式姓名拆分的Redshift SQL方案

针对你提到的多种姓名格式(含中间名、带连字符姓氏、缩写名等),可以通过正则表达式结合条件判断实现准确拆分,以下是适配Redshift(PostgreSQL 8.0.2内核)的SQL语句:

SELECT
    full_name,
    -- 提取名(含中间名、缩写格式)
    CASE
        WHEN TRIM(full_name) NOT LIKE '% %' THEN TRIM(full_name)
        ELSE REGEXP_REPLACE(TRIM(full_name), ' [^ ]+$', '')
    END AS first_name,
    -- 提取姓(含连字符格式)
    CASE
        WHEN TRIM(full_name) NOT LIKE '% %' THEN ''
        ELSE REGEXP_SUBSTR(TRIM(full_name), '[^ ]+$')
    END AS last_name
FROM your_table;

逻辑说明

  1. 预处理:用TRIM()清除姓名前后的冗余空格,避免干扰正则匹配
  2. 单字姓名处理:如果姓名不含空格(仅单个名字),直接将全名赋值给first_name,last_name设为空字符串
  3. 多部分姓名处理:
    • REGEXP_REPLACE(TRIM(full_name), ' [^ ]+$', ''):匹配最后一个空格及其后续所有非空格字符并替换为空,保留除最后一部分外的所有内容作为first_name(适配带中间名、缩写的格式,如Lisa Marie Scott→Lisa Marie,A.J. Jackson→A.J.)
    • REGEXP_SUBSTR(TRIM(full_name), '[^ ]+$'):匹配字符串末尾的所有非空格字符,提取最后一部分作为last_name(适配带连字符的姓氏,如Anna Jones-Porter→Jones-Porter)

测试验证

full_namefirst_namelast_name
Jeff DavisJeffDavis
Anna Jones-PorterAnnaJones-Porter
Lisa Marie ScottLisa MarieScott
A.J. JacksonA.J.Jackson
ObamaObama
John Michael O'ConnorJohn MichaelO'Connor

内容的提问来源于stack exchange,提问作者wizkids121

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 22:09:36