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

SQL Server中如何将两个逗号分隔字符串转为对应行插入表中

解决方案

你的问题出在拆分后没有将两个变量的对应位置元素关联,而是分别插入两个独立的行集,导致数据错位。核心思路是拆分时保留每个元素的位置序号,再通过序号将两个拆分结果关联,从而得到一一对应的item1和item2组合。

SQL Server 2022及以上版本

从SQL Server 2022开始,STRING_SPLIT支持第三个参数启用ordinal列(表示元素在原字符串中的位置),可以直接用这个序号关联两个拆分结果:

DECLARE @item1 NVARCHAR(100) = 'abc,def';
DECLARE @item2 NVARCHAR(100) = 'ghi,jkl';

-- 替换为你的实际表名
INSERT INTO YourTable (item1, item2)
SELECT s1.value, s2.value
FROM STRING_SPLIT(@item1, ',', 1) s1
JOIN STRING_SPLIT(@item2, ',', 1) s2 
  ON s1.ordinal = s2.ordinal;

SQL Server 2019及以下版本

低版本STRING_SPLIT不支持ordinal,需要自定义带序号的拆分函数,或者用XML解析生成序号关联:

方法1:自定义拆分函数

先创建带序号的拆分函数:

CREATE FUNCTION dbo.SplitStringWithOrdinal
(
    @string NVARCHAR(MAX),
    @delimiter NVARCHAR(10)
)
RETURNS TABLE
AS
RETURN
(
    SELECT 
        value,
        ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ordinal
    FROM STRING_SPLIT(@string, @delimiter)
);

然后使用函数关联插入:

DECLARE @item1 NVARCHAR(100) = 'abc,def';
DECLARE @item2 NVARCHAR(100) = 'ghi,jkl';

INSERT INTO YourTable (item1, item2)
SELECT s1.value, s2.value
FROM dbo.SplitStringWithOrdinal(@item1, ',') s1
JOIN dbo.SplitStringWithOrdinal(@item2, ',') s2 
  ON s1.ordinal = s2.ordinal;

方法2:无自定义函数的XML拆分法

如果无法创建函数,可以用XML解析的方式生成序号并关联:

DECLARE @item1 NVARCHAR(100) = 'abc,def';
DECLARE @item2 NVARCHAR(100) = 'ghi,jkl';

INSERT INTO YourTable (item1, item2)
SELECT 
    t1.item AS item1,
    t2.item AS item2
FROM (
    SELECT 
        Split.a.value('.', 'NVARCHAR(100)') AS item,
        ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ordinal
    FROM (SELECT CAST('<X>'+REPLACE(@item1, ',', '</X><X>')+'</X>' AS XML) AS Data) AS A
    CROSS APPLY Data.nodes('X') AS Split(a)
) t1
JOIN (
    SELECT 
        Split.a.value('.', 'NVARCHAR(100)') AS item,
        ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ordinal
    FROM (SELECT CAST('<X>'+REPLACE(@item2, ',', '</X><X>')+'</X>' AS XML) AS Data) AS A
    CROSS APPLY Data.nodes('X') AS Split(a)
) t2 ON t1.ordinal = t2.ordinal;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:30:55