2016-09-26 61 views
0

我需要拆分通過|分隔參數值,然後我需要這些值的每插入表分割參數和插入值通過循環T-SQL

SELECT [value] 
FROM STRING_SPLIT(@AtmRef, '|'); 

WHILE(@IND != LEN(@STR)) 
BEGIN 
    INSERT INTO Monitoring (UserId, Name, Surname, Branch, AtmRef, CheckTime, Telephone, Email, DateCreated) 
    VALUES (@UserId, @Name, @Surname, @Branch, @AtmRef, @CheckTime, @Telephone, @Email, GETDATE()) 
END 

@userId@name等是從值@AtmRef。現在STRING_SPLIT給我所有的值在一列

我該怎麼做?

回答

0

您可以使用XML.nodes分割字符串:

DECLARE @AtmRef nvarchar(max) = 'UserId|Name|Surname|Branch|AtmRef|CheckTime|Telephone|Email', 
     @x xml 

SELECT @x = CAST('<b>'+REPLACE(@AtmRef,'|','</b><b>')+'</b>' as xml) 

INSERT INTO Monitoring (UserId, Name, Surname, Branch, AtmRef, CheckTime, Telephone, Email, DateCreated) 
SELECT t.v.value('b[1]', 'nvarchar(max)'), 
     t.v.value('b[2]', 'nvarchar(max)'), 
     t.v.value('b[3]', 'nvarchar(max)'), 
     t.v.value('b[4]', 'nvarchar(max)'), 
     t.v.value('b[5]', 'nvarchar(max)'), 
     t.v.value('b[6]', 'nvarchar(max)'), 
     t.v.value('b[7]', 'nvarchar(max)'), 
     t.v.value('b[8]', 'nvarchar(max)'), 
     GETDATE() 
FROM @x.nodes('/') as t(v) 

您需要使用的,而不是nvarchar(max)

正確的數據類型