我定义了一个ntext类型的变量,其中的值为'abc,def,ghi,jkl,mno,pqr'的类似形式,以逗号分隔,因为实际值可能很大,所以不能用nvarchar类型。现在我想按以","分割的方式分割这个变量的值,并分别取出其中的值,我用的是charindex查找","的位置,再用substring来取值的方式。但现在的问题是,循环取值到一定数量以后,charindex就找不到","的位置了,请问有什么办法解决??请注意,我这里是操作变量,而不是表的列。。
调试欢乐多
insert into @t select N'abc,def,ghi,jkl,mno,pqr'
SELECT PATINDEX('%,%', a) from @t
对表列中的ntext内容,如何分割取值???
as
begin
Declare @Sql nvarchar(4000)
declare @p_s varchar(800)
Declare @p binary(16),@postion int,@rplen int
set @Sql=N'Select @p=textptr('+@vField+'),@rplen=len('''+@vBefore+'''),@postion=patindex(''%'+@vBefore+'%'','+@vField+')-1 from '+@vTable
exec sp_executesql @Sql,N'@p binary(16) output,@rplen int output,@postion int output ',@p output,@rplen output,@postion output
while @postion >= 0
begin
exec master.dbo.xp_varbintohexstr @p, @p_s out
set @Sql=N'updatetext '+@vTable+'.'+@vField+' '+@p_s+' '+cast(@postion as varchar(8))+' '+cast(@rplen as varchar(4))+' '''+@vAfter+''''
exec(@Sql)
set @Sql=N'select @postion=patindex(''%'+@vBefore+'%'','+@vField+')-1 from '+@vTable
exec sp_executesql @Sql,N'@postion int output ',@postion output
end
end -------
参考一下,你自己再修改一下就可以达到楼主的要求了