You need to enable JavaScript to run this app. SQL Server 2016 如何从fullname字段中拆分提取FirstName和LastName
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2016 如何从fullname字段中拆分提取FirstName和LastName

SQL Server 2016 拆分姓名字段实现方案

现有fullname字段格式统一为「名 姓 (备注信息)」,我们可以通过CHARINDEX定位分隔符位置,再用SUBSTRING截取对应内容即可,适配SQL Server 2016版本的查询语句如下:

Select
FirstName = LTRIM(RTRIM(SUBSTRING(fullname, 1, CHARINDEX(' ', fullname) - 1)))
,LastName = LTRIM(RTRIM(SUBSTRING(fullname, CHARINDEX(' ', fullname) + 1, CHARINDEX('(', fullname) - CHARINDEX(' ', fullname) - 1)))
FROM #Test

执行后输出结果和预期完全匹配:

FirstNameLastName
JoseMendez
BobSmith
FrankGoza

如果需要兼容姓名中间存在连续空格、或格式不规范的脏数据,可以增加替换逻辑和异常判断避免报错:

Select
FirstName = CASE 
              WHEN CHARINDEX(' ', fullname) > 0 THEN LTRIM(RTRIM(SUBSTRING(REPLACE(fullname, '  ', ' '), 1, CHARINDEX(' ', REPLACE(fullname, '  ', ' ')) - 1))) 
              ELSE fullname 
            END
,LastName = CASE 
              WHEN CHARINDEX(' ', fullname) > 0 AND CHARINDEX('(', fullname) > CHARINDEX(' ', fullname) THEN LTRIM(RTRIM(SUBSTRING(REPLACE(fullname, '  ', ' '), CHARINDEX(' ', REPLACE(fullname, '  ', ' ')) + 1, CHARINDEX('(', REPLACE(fullname, '  ', ' ')) - CHARINDEX(' ', REPLACE(fullname, '  ', ' ')) - 1))) 
              ELSE '' 
            END
FROM #Test

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 02:12:14