我目前正在使用函数来拆分以分号分隔的字符串。该函数无法将字符串拆分为12 000个字符。它运行几分钟,然后SSMS冻结。
你能建议我的功能,能够处理这个吗?我一到PC就会发布我使用的功能。
谢谢。
功能(现在按预期工作):
/* fce SplitList start */
Declare @CommaDelimitedFieldNames Varchar(MAX)
Declare @CharToFind VarChar(10)
Set @CommaDelimitedFieldNames = REPLACE(@String,' ','')
Set @CharToFind = ';'
Declare @Tbl_FieldNames Table
(
Position Integer Identity(1,1),
FieldName VarChar(8000)
)
Set @CommaDelimitedFieldNames = @CommaDelimitedFieldNames + @CharToFind
Declare @Pos1 Int
Declare @pos2 Int
Set @Pos1=1
Set @Pos2=1
While @Pos1<DataLength(@CommaDelimitedFieldNames)
Begin
Set @Pos1 = CharIndex(@CharToFind, @CommaDelimitedFieldNames,@Pos1)
Insert @Tbl_FieldNames Select Cast(Substring(@CommaDelimitedFieldNames,@Pos2,@Pos1-@Pos2) As NVARCHAR(MAX))
Set @Pos2=@Pos1+1
Set @Pos1 = @Pos1+1
End
/* fce Splitlist end */
答案 0 :(得分:0)
感谢您的所有建议。问题出在功能本身。我应该使用varchar(max)而不是nvachar(max)来变量@CommaDelimitedFieldNames(现在已经纠正了问题)。分割12 000个字符长的字符串现在大约需要3秒钟。