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

如何使用Split_String将字段拆分为多行并保留对应关联列数据

字段按分隔符拆分为多行实现方案

SQL Server 2016及以上版本(原生STRING_SPLIT实现)

直接使用STRING_SPLIT结合CROSS APPLY即可完成需求,示例代码如下:

SELECT 
    t.Name,
    t.TimeStamp,
    s.value AS StudentIds,
    t.Category,
    t.ReportName
FROM 
    你的实际表名 t
CROSS APPLY 
    STRING_SPLIT(t.StudentIds, ',') s

逻辑说明:

  • STRING_SPLIT(待拆分字段, 分隔符)会将字段按指定分隔符拆分,返回单列结果集,列名为value,存储拆分后的每个值
  • CROSS APPLY会将原表每一行和该行拆分出的多行结果做关联,原行的其余列数据会完整保留,完全匹配你的需求

低版本SQL Server兼容方案(不支持STRING_SPLIT的场景)

可以通过XML转换的方式实现拆分,示例代码如下:

SELECT 
    t.Name,
    t.TimeStamp,
    LTRIM(RTRIM(s.n.value('.', 'VARCHAR(100)'))) AS StudentIds,
    t.Category,
    t.ReportName
FROM 
    (
        SELECT 
            *,
            CAST('<X>'+REPLACE(StudentIds, ',', '</X><X>')+'</X>' AS XML) AS xml_split
        FROM 你的实际表名
        WHERE StudentIds IS NOT NULL AND StudentIds != '' -- 提前过滤空值避免无效行
    ) t
CROSS APPLY 
    xml_split.nodes('X') s(n)

逻辑说明:
先把逗号分隔的字符串替换为XML节点格式,再通过nodes()方法拆解每个节点,最终提取出每个拆分后的ID,LTRIM和RTRIM用于去除拆分结果前后可能存在的空格。

注意事项

如果原表存在StudentIds为空或NULL的行,可以在查询末尾添加过滤条件,避免生成多余的空值记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:24:05