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

SQL Server:将含逗号分隔值的列拆分为多行的实现需求

拆分SQL Server中逗号分隔字段为多行记录

嘿,这个需求在SQL Server里太常见了!我给你几个不同版本适用的解决方案,你按需挑选就行:

方案1:SQL Server 2016及以上版本(推荐,最简单)

从SQL Server 2016开始,官方提供了STRING_SPLIT函数专门用来拆分分隔符字符串,搭配CROSS APPLY就能轻松实现你的需求:

SELECT 
    t.productid,
    s.value AS subproductid
FROM 
    your_table t
CROSS APPLY 
    STRING_SPLIT(t.subproductid, ',') s;

CROSS APPLY会把拆分后的每一个子ID和原表对应的productid关联起来,直接输出你想要的多行结果,而且这个函数是官方优化过的,性能也靠谱。

方案2:SQL Server 2016以下版本(递归CTE实现)

如果你用的是更早的版本,没有STRING_SPLIT,可以用递归CTE来逐个拆分逗号分隔的内容:

WITH SplitCTE AS (
    -- 初始化:把原字段赋值给current_val
    SELECT 
        productid,
        CAST('' AS VARCHAR(MAX)) AS remaining,
        CAST(subproductid AS VARCHAR(MAX)) AS current_val
    FROM your_table
    UNION ALL
    -- 递归拆分:每次取第一个逗号前的内容,剩下的继续拆分
    SELECT 
        productid,
        CAST(SUBSTRING(current_val, CHARINDEX(',', current_val) + 1, LEN(current_val)) AS VARCHAR(MAX)),
        CAST(SUBSTRING(current_val, 1, CASE WHEN CHARINDEX(',', current_val) = 0 THEN LEN(current_val) ELSE CHARINDEX(',', current_val) - 1 END) AS VARCHAR(MAX))
    FROM SplitCTE
    WHERE current_val <> ''
)
-- 过滤空值,得到最终结果
SELECT 
    productid,
    current_val AS subproductid
FROM SplitCTE
WHERE current_val <> ''
ORDER BY productid;

方案3:SQL Server 2016以下版本(数字表拆分)

另一种低版本的实现方式是用数字表(生成连续的数字序列),通过定位逗号位置来截取子ID:

-- 先生成一个包含连续数字的临时表(这里生成1到1000的数字,足够应对大部分场景)
DECLARE @Numbers TABLE (Number INT);
INSERT INTO @Numbers (Number)
SELECT TOP (1000) ROW_NUMBER() OVER (ORDER BY (SELECT NULL))
FROM sys.all_columns ac1
CROSS JOIN sys.all_columns ac2;

-- 拆分字段
SELECT 
    t.productid,
    SUBSTRING(',' + t.subproductid + ',', n.Number + 1, CHARINDEX(',', ',' + t.subproductid + ',', n.Number + 1) - n.Number - 1) AS subproductid
FROM 
    your_table t
JOIN 
    @Numbers n ON n.Number < LEN(',' + t.subproductid + ',')
WHERE 
    SUBSTRING(',' + t.subproductid + ',', n.Number, 1) = ','
ORDER BY 
    t.productid;

给原字段前后加逗号是为了统一处理开头和结尾的子ID,避免边界情况出错。

内容的提问来源于stack exchange,提问作者Amresh Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:16:34