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

如何通过单条INSERT语句插入多组拆分后的字符串数据

实现逗号分隔字符串对应插入临时表的方法

嘿,这个需求其实挺常见的——咱们要把三个按位置一一对应的逗号分隔字符串拆分后,精准插入临时表的对应字段对吧?下面分两种情况给你解决方案,适配不同版本的SQL Server:

方法一:适用于SQL Server 2016及以上(兼容范围广)

咱们可以用OPENJSON来拆分字符串,它会返回每个元素的位置索引(key字段),刚好能用来关联三个变量里的对应元素:

Declare @APS nvarchar(1000)='1,1,1.79103540163304,1.79103540163304' ,
        @cluster nvarchar(1000)='0150,0019,0150,0019' ,
        @style nvarchar(1000)='696707-018,696707-018,696707-017,696707-017' 

CREATE TABLE #temptable ( 
    ID int IDENTITY (1, 1) NOT NULL , 
    stylecolor varchar (500) NOT NULL , 
    APSDev varchar (250) NULL, 
    ClusterID varchar(1000) Null 
)

-- 核心插入逻辑
INSERT INTO #temptable (stylecolor, ClusterID, APSDev)
SELECT 
    s.value AS stylecolor,
    c.value AS ClusterID,
    a.value AS APSDev
FROM 
    -- 把逗号分隔字符串转成JSON数组格式,让OPENJSON能解析
    OPENJSON('["' + REPLACE(@style, ',', '","') + '"]') s
-- 通过key(元素位置)关联三个拆分后的结果,保证位置对应
JOIN 
    OPENJSON('["' + REPLACE(@cluster, ',', '","') + '"]') c ON s.[key] = c.[key]
JOIN 
    OPENJSON('["' + REPLACE(@APS, ',', '","') + '"]') a ON s.[key] = a.[key]

-- 可以查一下结果是否正确
SELECT * FROM #temptable

原理说明

REPLACE(@style, ',', '","')是把696707-018,696707-018...转换成696707-018","696707-018...,再加上前后的["和"]就变成了标准的JSON数组,OPENJSON解析后会返回每个元素的key(从0开始的位置序号)和value(元素内容),通过key相等关联,就能确保三个变量里的第N个元素对应插入同一条记录。

方法二:适用于SQL Server 2022及以上(更简洁)

SQL Server 2022给STRING_SPLIT加了enable_ordinal参数,直接返回元素的序号(ordinal字段),代码会更清爽:

-- 变量和临时表定义和之前一致,此处省略重复代码
INSERT INTO #temptable (stylecolor, ClusterID, APSDev)
SELECT 
    s.value AS stylecolor,
    c.value AS ClusterID,
    a.value AS APSDev
FROM 
    STRING_SPLIT(@style, ',', 1) s
-- 通过ordinal(元素序号)关联,保证位置对应
JOIN 
    STRING_SPLIT(@cluster, ',', 1) c ON s.ordinal = c.ordinal
JOIN 
    STRING_SPLIT(@APS, ',', 1) a ON s.ordinal = a.ordinal

注意事项

  • 要确保三个变量里的元素数量完全一致,不然用JOIN会丢失不匹配的行;如果需要保留所有元素(哪怕数量不一致),可以把JOIN换成FULL JOIN,然后处理NULL值。
  • 如果你的字符串里有特殊字符(比如双引号),需要先做转义处理,避免JSON解析出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:35:29