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

SQL Server逗号分隔列值转多行的T-SQL脚本解决方案求助

T-SQL拆分逗号分隔字符串为独立行方案

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

直接使用内置STRING_SPLIT函数实现,语法简单性能最优:

SELECT 
    s.value AS split_value
FROM 
    Test t
CROSS APPLY 
    STRING_SPLIT(t.value, ',') s

如果需要携带Test表的其他关联字段,直接在SELECT子句中添加即可:

-- 示例:同时输出Test表的id字段
SELECT 
    t.id,
    s.value AS split_value
FROM 
    Test t
CROSS APPLY 
    STRING_SPLIT(t.value, ',') s

方案2:SQL Server 2014及更早版本(兼容旧环境)

没有STRING_SPLIT函数的旧版本,可通过XML解析实现拆分:

SELECT 
    LTRIM(RTRIM(m.n.value('.[1]', 'varchar(20)'))) AS split_value
FROM 
    (
        SELECT 
            CAST('<root><row>' + REPLACE(t.value, ',', '</row><row>') + '</row></root>' AS XML) AS split_xml
        FROM Test t
    ) tmp
CROSS APPLY 
    split_xml.nodes('/root/row') m(n)

注意:可根据实际字符串长度调整varchar(20)的长度定义,LTRIM、RTRIM用于去除拆分后可能存在的前后空格。


效果验证

针对你给出的示例字符串,两种方案运行后都会输出10行独立的数值结果,和原始逗号分隔的每个取值一一对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:09:03