T-SQL - 拆分字符串函数

时间:2014-01-29 06:55:11

标签: sql-server tsql

我目前正在使用函数来拆分以分号分隔的字符串。该函数无法将字符串拆分为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 */

1 个答案:

答案 0 :(得分:0)

感谢您的所有建议。问题出在功能本身。我应该使用varchar(max)而不是nvachar(max)来变量@CommaDelimitedFieldNames(现在已经纠正了问题)。分割12 000个字符长的字符串现在大约需要3秒钟。

相关问题