zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    制作计算器的代码(C#)
    Oracle如何实现创建数据库、备份数据库及数据导出导入操作
    XmlDocument类
    Android强大的开源库与系统架构工具
    IO
    胎压监测设备
    福施福、爱乐维、玛特纳各成分比较(已换算成同一单位)
    用车不容忽视的细节
    汽车必备车饰和常用物品
    j2ee指导型框架或示例
  • 原文地址:https://www.cnblogs.com/yanan7890/p/9176326.html
Copyright © 2011-2022 走看看