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

如何在SQL Server语句中对同一字段内容进行换行拆分?

在SQL Server中拆分字段内容并生成多行记录

嘿,这个需求我刚好处理过,在SQL Server里可以通过字符串拆分+格式调整轻松实现,下面分不同场景给你具体方案:

1. 处理单个变量值

假设你有一个固定的输入字符串变量,我们可以先提取前面的固定前缀,再拆分服务器名称列表,最后拼接成你要的格式:

DECLARE @input NVARCHAR(MAX) = 'storage;virtual;servername1, servername2, servername3';

-- 提取前缀并调整格式(给分号后加空格,匹配期望输出的样式)
DECLARE @prefix NVARCHAR(MAX) = REPLACE(LEFT(@input, CHARINDEX(';', @input, CHARINDEX(';', @input) + 1)), ';', '; ');

-- 拆分服务器名称并和前缀拼接
SELECT @prefix + TRIM(value) AS result
FROM STRING_SPLIT(SUBSTRING(@input, CHARINDEX(';', @input, CHARINDEX(';', @input) + 1) + 1, LEN(@input)), ',');

执行后输出就是你想要的:

storage; virtual; servername1
storage; virtual; servername2
storage; virtual; servername3

代码简单解释:

  • LEFT(...):定位到第二个分号的位置,提取出storage;virtual;这部分前缀;
  • REPLACE(...):把分号替换成; ,让格式和你期望的一致;
  • SUBSTRING(...):截取第三个分号后的服务器名称列表;
  • STRING_SPLIT(...):按逗号拆分列表,TRIM(value)去掉每个名称前后的空格;
  • 最后把前缀和拆分后的名称拼接,得到每行的结果。

2. 处理表中的字段

如果数据存在表中(比如表名为ServerInfo,字段名为Detail),直接把变量替换成表字段即可:

SELECT 
    REPLACE(LEFT(Detail, CHARINDEX(';', Detail, CHARINDEX(';', Detail) + 1)), ';', '; ') + TRIM(value) AS result
FROM ServerInfo
CROSS APPLY STRING_SPLIT(SUBSTRING(Detail, CHARINDEX(';', Detail, CHARINDEX(';', Detail) + 1) + 1, LEN(Detail)), ',');

兼容低版本SQL Server(2016之前)

要是你的SQL Server版本低于2016(没有STRING_SPLIT函数),可以用XML方法来拆分字符串:

DECLARE @input NVARCHAR(MAX) = 'storage;virtual;servername1, servername2, servername3';
DECLARE @prefix NVARCHAR(MAX) = REPLACE(LEFT(@input, CHARINDEX(';', @input, CHARINDEX(';', @input) + 1)), ';', '; ');
DECLARE @serverList NVARCHAR(MAX) = SUBSTRING(@input, CHARINDEX(';', @input, CHARINDEX(';', @input) + 1) + 1, LEN(@input));

SELECT 
    @prefix + TRIM(Split.a.value('.', 'NVARCHAR(MAX)')) AS result
FROM (
    SELECT CAST('<M>' + REPLACE(@serverList, ',', '</M><M>') + '</M>' AS XML) AS Data
) AS A
CROSS APPLY Data.nodes('/M') AS Split(a);

这个方法是把逗号分隔的字符串转成XML节点,再逐个提取节点值,效果和STRING_SPLIT完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:57:33