USE [BooksBrothersWebOrder]
GO
/****** Object: UserDefinedFunction [dbo].[FX_Split] Script Date: 08/13/2012 09:28:51 ******/
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[FX_Split]
(
@SplitString varchar(8000),-- 需要分隔的字符串
@Separator varchar(2) --分隔符哈
)
RETURNS @SplitStringsTable TABLE
(
[id] int identity(1,1),
[value] varchar(8000)-- nvarchar(4000)
)
AS
BEGIN
DECLARE @CurrentIndex int; --当前索引
DECLARE @NextIndex int; --下一位索引
DECLARE @ReturnText varchar(200);-- 返回文本值
SELECT @CurrentIndex=1; --默念当前索引表示和第一位开始
WHILE(@CurrentIndex<=len(@SplitString))--要分隔字符串的长度 当满足条件就会跳出
BEGIN
SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);--得到分隔符的位置
IF(@NextIndex=0 OR @NextIndex IS NULL) --如果是0或者空得到新索引的长度
SELECT @NextIndex=len(@SplitString)+1;
SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex); --截取返回
INSERT INTO @SplitStringsTable([value])
VALUES(@ReturnText);
SELECT @CurrentIndex=@NextIndex+1; --索引依次变化
END
RETURN;
END
SELECT @Flag= charindex(@ReturnText,@ReturnTextTotal)--取得函数返回值(这句话就可以,上面的那个函数还有问题)