我需要拆分由|
分隔的参数值,然后我需要将每个值插入表中
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 :(得分: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)