• sqlserver 字符串拆分和取某分隔符之前的字符串


    ALTER FUNCTION [dbo].[f_splitSTR](  
        @s   varchar(8000),   --待分拆的字符串  
        @split varchar(10)     --数据分隔符  
    )RETURNS @re TABLE(  
            col varchar(max))  
    AS  
    BEGIN  
        DECLARE   
            @splitlen int  
      
        -- 取分隔符的长度, 在分隔符后面加一个字符是为了避免分隔符以空格结束时, 取不到正确的长度  
        SET @splitlen = LEN(@split + 'a') - 2  
        -- 如果待分拆的字符串中存在数据分隔符, 则循环取出每个数据项  
        WHILE CHARINDEX(@split, @s)>0  
        BEGIN  
            -- 取第一个数据分隔符前的数据项  
            INSERT @re VALUES(LEFT(@s, CHARINDEX(@split, @s) - 1))  
              
            -- 将已经取出的第一个数据项和数据分隔符从待分拆的字符串中去掉  
            SET @s = STUFF(@s, 1, CHARINDEX(@split, @s) + @splitlen, '')  
        END  
          
        -- 保存最后一个数据项(最后一个数据项后面没有数据分隔符, 故在前面的循环中不会被处理)  
        INSERT @re VALUES(@s)  
        RETURN     
      end  

    例子:

    原文忘记了出处。

      

    取某分隔符之前的字符串(自己写的函数,希望多多交流)

    create FUNCTION [dbo].[fn_leftFirst]   
    (  
        @source nvarchar(max), @split nvarchar(1000) 
    )  
    RETURNS nvarchar(max)  
    AS  
    BEGIN  
      if(CHARINDEX(@split, @source)>0)BEGIN
            return left(@source,CHARINDEX(@split, @source)-LEN(@split)+1)
        END
        return @source
    END

    20180809:字符串分隔方法二

    今日写sql语句时提示有SplitString函数,查了一下用法,值得推荐

    select * from SplitString('待拆分的字符串','分隔符',返回值是否包含空串(bit))

    示例:

    select * from SplitString('201,202,203,3109,3179,3638,4384,4447,4462,3012',',',1)

  • 相关阅读:
    tuple元组
    list列表
    OS模块
    time模块/datetime模块/calendar模块
    Codeforces Round #196 (Div. 2)
    【HDU 2853】 KM算法
    【HDU1914 The Stable Marriage Problem】稳定婚姻问题
    【HDU4585 Shaolin】map的经典运用
    【HDU4578 Transformation】线段树
    【HDU4632 Palindrome subsequence】区间dp
  • 原文地址:https://www.cnblogs.com/yanan7890/p/9176326.html
Copyright © 2020-2023  润新知