zoukankan      html  css  js  c++  java
  • 自写的几个常用Sql字符串拆分函数

    --用指定的字符拆分一个字符串,并传入一个字符串判断传入的这个字符串是否存在于拆分以后的字符串数组中
    create function SplitString(@expression varchar(500),@char varchar(10),@str varchar(50))  
     returns bit  
    as  
    begin   
     --如果传进来的字符串是null则返回0   
     if(isnull(@expression,' ')=' ')
        return 0
     declare @beginIndex int,@endIndex int  --截取子串的起始索引和结束索引      
     declare @Count int --记录循环的次数  
     set @beginIndex=1--注意:Sql中字符串的索引是从1开始  
     set @Count=0  
     while(1=1)  
     begin  
      set @Count=@Count+1  
      set @endIndex=charindex(@char,@expression,@beginIndex)  
      --如果没有找到分隔符,则将整个要分割的串与需要判断的串对比  
      if(@endIndex=0)  
      begin  
       --如果是第一次截取子串  
       if(@Count=1)  
       begin  
        if(@expression=@str)  
        begin  
         return 1  
        end  
        begin  
         return 0  
        end   
       end   
                else --如果是最后一次截取子串,则将最后一个分隔符后面的字符串取出来与需要判断的串对比  
       begin  
         if(@str=substring(@expression,@beginIndex,len(@expression)-@beginIndex+1))  
         begin  
          return 1  
         end  
         else  
         begin  
          return 0  
         end  
       end      
      end  
        
      --如果匹配,则返回1  
            if(@str=substring(@expression,@beginIndex,@endIndex-@beginIndex))  
      begin  
       return 1  
      end  
      else  --如果不匹配则继续寻找  
      begin  
       set @beginIndex=@endIndex+1  
      end  
     end   
        return 0  
    end  




    --用指定的字符拆分一个字符串,并传入一个索引,返回拆分后指定索引的字串(索引从1开始)
    create function IndexOfArray(@expression varchar(500),@char varchar(10),@Index int)
        returns varchar(200)
    as
    begin    
        declare @beginIndex int,@endIndex int  --截取子串的起始索引和结束索引    
        declare @Count int --记录循环的次数
        set @beginIndex=1 --注意:Sql中字符串的索引是从1开始
        set @Count=0
        while(1=1)
        begin
            set @Count=@Count+1
            set @endIndex=charindex(@char,@expression,@beginIndex)
            
            --如果没有找到分隔符,则截取最后一个分隔符到字符串末尾的子串
            if(@endIndex=0)
            begin
                return substring(@expression,@beginIndex,len(@expression)-@beginIndex+1)
            end        

            --如果这一次截取出来的字符串的索引是指定索引,则返回截取出来的字符串
                if(@Count=@Index)
            begin    
                return substring(@expression,@beginIndex,@endIndex-@beginIndex)            
            end
            else  --否则继续
            begin
                set @beginIndex=@endIndex+1
                continue
            end
        end    
        return ''
    end
    go


    --用指定的字符拆分一个字符串,并传入一个字符串判断传入的这个字符串
    --是否与拆分以后的字符串数组中指定索引的字符串相等
    create function SplitEquare(@expression varchar(200),@char varchar(10),@Index int,@str varchar(100))
    returns bit
    as
    begin
        declare @SplitStr varchar(100)
        set @SplitStr=dbo.IndexOfArray(@expression,@char,@Index)
        if(@SplitStr=@str)
        begin
            return 1
        end
        else
        begin
            return 0
        end
        return 0
    end
    go
  • 相关阅读:
    IE浏览器不能启动,双击启动图标无效
    提示Internet Explorer 9 已安装在此系统上,无法完成安装
    React项目跨域处理(两种方案)
    Mock数据模拟Node服务器
    【LeetCode】15. 3Sum
    【C++】int与string互转
    【LeetCode】37. Sudoku Solver
    【LeetCode】149. Max Points on a Line
    【LeetCode】104. Maximum Depth of Binary Tree (2 solutions)
    【LeetCode】140. Word Break II
  • 原文地址:https://www.cnblogs.com/mxw09/p/1873340.html
Copyright © 2011-2022 走看看