小打小闹  

最初是根据数据ID批量删除数据,因为不知道到底是要删除多少条,而T-sql里也没有像C#中params这样方便的东西,所以想到字符串分割,但是发现T-sql中也没有提供字符串分割的函数,所以自己搜索了下,然后写出如下的内容。

Create function [dbo].[Split]
(
	@SplitString  nvarchar(max),	--要分割的字符串
	@Separator  nvarchar(10)		--分隔符号
)
returns @SplitStringsTable Table	--因为不知道返回多少数据,所以返回表
(	
	[value] nvarchar(max)
)
as
begin
	DECLARE @CurrentIndex int;	--
     DECLARE @NextIndex int;	--
     DECLARE @ReturnText nvarchar(max);	--要返回的字符
     SELECT @CurrentIndex=1;
     WHILE(@CurrentIndex<=len(@SplitString))	--循环查找
         BEGIN
             SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);	--从@CurrentIndex开始寻找分隔字符在要分割的字符串中首次出现的位置
             IF(@NextIndex=0 OR @NextIndex IS NULL)	--如果首次出现的位置不为0也不会null
                 SELECT @NextIndex=len(@SplitString)+1;	--重新给@NextIndex赋值
                 SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex);	--将字符串分割出来
                 INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText);	--将字符串插入表中
                 SELECT @CurrentIndex=@NextIndex+1;
             END

	return;
end

 

posted on 2013-06-30 17:34  小打小闹  阅读(292)  评论(0)    收藏  举报