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

如何在T-SQL中将表内多值字段拆分并生成对应独立行数据

T-SQL拆分逗号分隔多值列为多行实现方案

适用版本:SQL Server 2016 及以上(内置STRING_SPLIT函数)

这是最简洁的实现方式,直接调用系统内置拆分函数即可:

-- 假设你的原始表名为SampleTable,可替换为实际表名
SELECT 
    t.Col1,
    LTRIM(RTRIM(s.value)) AS Col2
FROM SampleTable t
CROSS APPLY STRING_SPLIT(t.Col2, ',') s

逻辑说明:

  • STRING_SPLIT(待拆分列, 分隔符) 是SQL Server 2016推出的内置拆分函数,会返回拆分后所有值的结果集
  • CROSS APPLY 用于关联原表和拆分后的结果集,自动为每个拆分后的值生成对应新行
  • LTRIM(RTRIM()) 用于去除拆分后值前后的空格,适配示例中逗号后带空格的原始数据场景

适用版本:SQL Server 2016 以前(无内置拆分函数)

可以用XML解析的方式实现拆分逻辑:

SELECT 
    t.Col1,
    LTRIM(RTRIM(s.n.value('.', 'VARCHAR(100)'))) AS Col2
FROM (
    SELECT 
        Col1,
        CAST('<N>' + REPLACE(Col2, ',', '</N><N>') + '</N>' AS XML) AS XmlCol
    FROM SampleTable
) t
CROSS APPLY XmlCol.nodes('/N') s(n)

逻辑说明:

  • 先通过REPLACE把逗号替换为XML节点标签,将整列值转换为标准XML格式
  • 再通过nodes()方法解析XML节点,得到每个拆分后的值
  • 可根据实际业务调整返回值的长度和数据类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:18:01