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

TSQL中拆分分隔字符串并循环更新表字段的实现方法

TSQL拆分逗号分隔字符串并循环更新表字段

方法一:使用WHILE循环实现

针对你的需求,我们可以通过WHILE循环逐步拆分字符串,提取每个obj_name:version键值对,再拆分出对象名和版本号,最后执行更新操作。以下是完整的TSQL代码:

DECLARE @source VARCHAR(500)
DECLARE @tempStr VARCHAR(100)
DECLARE @objName VARCHAR(50)
DECLARE @version INT
DECLARE @commaPos INT

SET @source = 'employee:0,dept:1'

-- 循环处理直到字符串为空
WHILE LEN(@source) > 0
BEGIN
    -- 找到第一个逗号的位置,分割出单个键值对
    SET @commaPos = CHARINDEX(',', @source)
    
    IF @commaPos > 0
    BEGIN
        SET @tempStr = LEFT(@source, @commaPos - 1)
        SET @source = RIGHT(@source, LEN(@source) - @commaPos)
    END
    ELSE
    BEGIN
        -- 处理最后一个键值对
        SET @tempStr = @source
        SET @source = ''
    END

    -- 拆分obj_name和latest_version的值
    SELECT @objName = LEFT(@tempStr, CHARINDEX(':', @tempStr) - 1),
           @version = CAST(RIGHT(@tempStr, LEN(@tempStr) - CHARINDEX(':', @tempStr)) AS INT)

    -- 执行更新操作
    UPDATE dbo.omega 
    SET latest_version = @version 
    WHERE obj_name = @objName
END

代码说明:

  • 初始化变量:定义存储源字符串、临时键值对、对象名、版本号和逗号位置的变量。
  • 循环拆分:通过CHARINDEX定位逗号,逐个提取obj_name:version格式的子串,处理后截断源字符串。
  • 键值对拆分:再次使用CHARINDEX定位冒号,分离出对象名和版本号,并将版本号转为INT类型。
  • 执行更新:针对每个对象名,更新对应的latest_version字段。

方法二:使用STRING_SPLIT(SQL Server 2016+)批量更新(更高效)

如果你的SQL Server版本是2016或更高,推荐使用STRING_SPLIT函数结合CROSS APPLY批量处理,避免循环带来的性能损耗:

DECLARE @source VARCHAR(500) = 'employee:0,dept:1'

UPDATE o
SET o.latest_version = CAST(s2.version AS INT)
FROM dbo.omega o
JOIN (
    -- 拆分逗号分隔的字符串为单个键值对
    SELECT value AS kvp
    FROM STRING_SPLIT(@source, ',')
) s1
-- 拆分键值对为obj_name和version
CROSS APPLY (
    SELECT 
        LEFT(s1.kvp, CHARINDEX(':', s1.kvp) - 1) AS obj_name,
        RIGHT(s1.kvp, LEN(s1.kvp) - CHARINDEX(':', s1.kvp)) AS version
) s2
ON o.obj_name = s2.obj_name

代码说明:

  • 用STRING_SPLIT将源字符串拆分为多个obj_name:version行。
  • 通过CROSS APPLY进一步拆分每个行,得到对象名和版本号。
  • 用JOIN关联dbo.omega表,批量更新匹配的记录,比循环效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 04:22:39