自定义SQL中的SplitString函数

SQL Server中貌似没有Split函数,不能实现将某个字符串按照某个特定的字符分隔,在这里,提供一个自定义SQL函数,实现Split功能,当然,返回数组是不可能滴,你懂的...

/******************************************************************************
**  功能:将指定的字符串按照指定的分隔符分割,返回指定索引的子字符串
**  作者:Danny,Li (xing.dong.li@163.com)
**  日期:2011-08-19
*******************************************************************************
**  返回值列表
****************************
**  返回值        涵义
**  -------        ------------------------------------------------------
**  @Result        指定索引的子字符串(索引从0开始)
**
*******************************************************************************/
CREATE FUNCTION dbo.fun_SplitString
(
    @Expression VARCHAR(8000),    -- 欲处理的字符串
    @SplitChar CHAR(1),            -- 分隔符
    @Index INT                    -- 取值索引
)
Returns varchar(255)
AS
BEGIN
DECLARE @Result varchar(255),@TempIndex INT,@Temp INT,@Idx INT
SET @TempIndex = 0
SET @Idx = 0
WHILE @TempIndex>=0
BEGIN
    SET @Temp = CHARINDEX(@SplitChar,@Expression,@TempIndex)
    IF @TempIndex=0
        SET @Result = SUBSTRING(@Expression,0,@Temp)
    ELSE IF @TempIndex<@Temp
        SET @Result = SUBSTRING(@Expression,@TempIndex,@Temp-@TempIndex)
    ELSE
        SET @Result = SUBSTRING(@Expression,@TempIndex,LEN(@Expression)-@TempIndex+1)
    IF @Temp < @TempIndex
        SET @TempIndex = -1
    ELSE
        SET @TempIndex = @Temp+1
    IF @Idx=@Index
        SET @TempIndex = -1
    ELSE
    BEGIN
        SET @Idx = @Idx+1
        SET @Result = ''
    END        
END
    RETURN @Result
END

 

posted @ 2012-08-29 22:25  DannyLi  阅读(720)  评论(0编辑  收藏  举报