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

SQL Server 2016拆分Name列更新FirstName与LastName字段的实现方案

解决方案

SQL Server 2016版本的STRING_SPLIT既不支持ordinal参数,也不保证返回的拆分结果顺序和原字符串中的顺序一致,所以原有写法不仅拿不到第二个拆分值,还可能出现顺序错乱的问题。在你给定的简化假设下,直接用字符串截取函数是性能最优、逻辑最简洁的实现方案:


1. 先运行SELECT预览结果验证逻辑

SELECT
    [Name],
    LEFT([Name], CHARINDEX(' ', [Name]) - 1) AS FirstName,
    RIGHT([Name], LEN([Name]) - CHARINDEX(' ', [Name])) AS LastName
FROM UserTable
WHERE LastName IS NULL AND [Name] IS NOT NULL
  • 逻辑说明:
    • CHARINDEX(' ', [Name]) 用于定位空格在Name字段中的下标位置
    • 用LEFT截取空格之前的内容作为FirstName
    • 用RIGHT截取空格之后的内容作为LastName

2. 执行UPDATE操作

确认SELECT返回的结果符合预期后,运行以下更新语句:

UPDATE UserTable
SET 
    FirstName = LEFT([Name], CHARINDEX(' ', [Name]) - 1),
    LastName = RIGHT([Name], LEN([Name]) - CHARINDEX(' ', [Name]))
WHERE LastName IS NULL AND [Name] IS NOT NULL

注:如果你的SQL Server实例配置了ANSI_PADDING OFF,可能存在尾部空格导致LEN计算不准的情况,可以把LEN([Name])替换为DATALENGTH([Name])/2(NVARCHAR类型),如果是VARCHAR类型直接用DATALENGTH([Name])即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:15:11