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 item from [<table name>]. dbo.SplitString(@style,',')
select item from [<table name>].dbo.SplitString(@cluster,',')
select item from [<table name>]. dbo.SplitString(@APS,',')
获取错误:
INSERT语句的选择列表包含的项目少于插入 名单。 SELECT值的数量必须与INSERT列的数量匹配。
输出结果:应该是这样的
stylecolor clusterID APSDev
696707-018 0150 1
696707-018 0019 1
696707-017 0150 1.79103540163304
696707-017 0019 1.79103540163304
答案 0 :(得分:0)
如果您的SplitString函数类似于here找到的函数,您可以创建一个返回包含两个字段list_index
和list_value
的表的修改版本。然后使用如下查询:
INSERT INTO #temptable (stylecolor, ClusterID, APSDev)
SELECT s.list_value, c.list_value, a.list_value
FROM dbo.SplitStringWithIndex(@style,',') AS s
INNER JOIN dbo.SplitStringWithIndex(@cluster,',') AS c ON s.list_index = c.list_index
INNER JOIN dbo.SplitStringWithIndex(@APS,',') AS a ON s.list_index = a.list_index
;
修改我链接的那个应该只涉及在它的主循环中添加一个计数器。