sql server 分割字符串方法

一 存储过程

alter FUNCTION [dbo].[F_ProLineDingInfo](  
    @s   varchar(max),   --待分拆的字符串  
    @split varchar(10)     --数据分隔符  
)RETURNS @ProLineDing TABLE(  
        CompanyName varchar(max),
        DepartName varchar(max),
        UserName varchar(max),
        HJCode varchar(max),--环节名称
        DingId varchar(max)
        )
          
AS  
BEGIN  
     DECLARE @CompanyName nvarchar(500);
     DECLARE @DepartName nvarchar(500);
     DECLARE @UserName nvarchar(max);
     DECLARE @HJCode nvarchar(500);
     DECLARE @DingId nvarchar(500);
    DECLARE   
        @splitlen int  
    -- 取分隔符的长度, 在分隔符后面加一个字符是为了避免分隔符以空格结束时, 取不到正确的长度  
    SET @splitlen = LEN(@split + 'a') - 2  
    -- 如果待分拆的字符串中存在数据分隔符, 则循环取出每个数据项  
    WHILE CHARINDEX(@split, @s)>0  
    BEGIN  
     DECLARE MyCursor CURSOR
        FOR   select TOP 1 t2.FullName as DepartName,t3.FullName,t1.RealName,t1.WeChat,t1.NodeCode from Base_User as t1
        left join Base_Department as t2 on t1.DepartmentId=t2.DepartmentId
        left join  Base_Organize as t3 on t2.OrganizeId =t3.OrganizeId
        where t1.WeChat =''+LEFT(@s, CHARINDEX(@split, @s) - 1)+''
        OPEN MyCursor;
        FETCH NEXT FROM MyCursor INTO @DepartName,@CompanyName,@UserName,@DingId,@HJCode;
      
        -- 取第一个数据分隔符前的数据项  
        INSERT @ProLineDing VALUES(@CompanyName,@DepartName,@UserName,@HJCode,@DingId)  
          
        -- 将已经取出的第一个数据项和数据分隔符从待分拆的字符串中去掉  
        SET @s = STUFF(@s, 1, CHARINDEX(@split, @s) + @splitlen, '')  
    END  
      
    -- 保存最后一个数据项(最后一个数据项后面没有数据分隔符, 故在前面的循环中不会被处理)  
    INSERT @ProLineDing VALUES(@CompanyName,@DepartName,@UserName,@HJCode,@DingId)  
    RETURN     
  end  

 

 

二:内置函数

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

示例:

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值