0
我需要分隔符|
分割字符串,那么获得的每一个值,我需要在名称字段中插入相同的,像这样:分割字符串在T-SQL和插入参数
下面是我的代码来分割字符串。
DECLARE @SplitStringTable TABLE (Value nvarchar(MAX) NOT NULL)
DECLARE @StringToSplit nvarchar(MAX) = 'abc|def|gh|ijj'
DECLARE @SplitEndPos int
DECLARE @SplitValue nvarchar(MAX)
DECLARE @SplitDelim nvarchar(1) = '|'
DECLARE @SplitStartPos int = 1
SET @SplitEndPos = CHARINDEX(@SplitDelim, @StringToSplit, @SplitStartPos)
WHILE @SplitEndPos > 0
BEGIN
SET @SplitValue = SUBSTRING(@StringToSplit, @SplitStartPos, (@SplitEndPos - @SplitStartPos))
INSERT @SplitStringTable (Value) VALUES (@SplitValue)
SET @SplitStartPos = @SplitEndPos + 1
SET @SplitEndPos = CHARINDEX(@SplitDelim, @StringToSplit, @SplitStartPos)
END
BEGIN TRANSACTION T1
DECLARE @i int = 0
WHILE @i < @SplitEndPos
BEGIN
INSERT INTO Monitoring (UserId, Name, DateCreated)
VALUES (@UserId, @Name, getdate())
SET @i = @i + 1
END
COMMIT TRANSACTION T1
请帮忙,我该怎么办?
没有必要诉诸循环的分裂字符串。请参阅这篇文章并更换您的字符串拆分器。 http://sqlperformance.com/2012/07/t-sql-queries/split-strings –
肖恩说,他发布的链接是一篇文章,描述了在2012年之前的系统上拆分字符串的最快方法。如果您运行的是SQL Server 2012+,那么这个版本的速度稍微快一些,可以利用LEAD分析功能:http://www.sqlservercentral.com/articles/SQL+Server+2012/106903/ –