zoukankan      html  css  js  c++  java
  • 自定义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
  • 相关阅读:
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
    福大软工1816 · 第六次作业
    福大软工1816 · 第五次作业
    福大软工1816
    福大软工1816 · 第三次作业
    alpha冲刺总结随笔
    alpha-咸鱼冲刺day8
    alpha-咸鱼冲刺day9
    alpha-咸鱼冲刺day7
    alpha-咸鱼冲刺day5
  • 原文地址:https://www.cnblogs.com/dannyli/p/2662825.html
Copyright © 2011-2022 走看看