sql server 切割字符串

DECLARE @str VARCHAR(100) ;
      SET @str = '5,abc,aaa;6,cde,eee;7,gbf,ggg' ;
      DECLARE @s VARCHAR(100) ;
      DECLARE @sql VARCHAR(1000) ;
      SET @sql = '' ;
      DECLARE @sIndex INT ;
      DECLARE @eIndex INT ;
      SET @sIndex = 1 ;
        
      DECLARE @b BIT ;
      SET @b = 0 ;
      
      

        
      WHILE ( 1 = 1 ) 
        BEGIN
            SET @eIndex = CHARINDEX(';', @str, @sIndex) ;
            IF ( @eIndex = 0 ) 
                BEGIN
                    SET @eIndex = LEN(@str) + 1 ;
                    SET @b = 1 ;
                END
            SET @s = SUBSTRING(@str, @sIndex, @eIndex - @sIndex) ;
            SET @sIndex = @eIndex + 1 ;
            --PRINT @s ;
            
            DECLARE @sI INT ;
            DECLARE @eI INT ;
            DECLARE @ss VARCHAR(100) ;
            DECLARE @break BIT ;
            SET @break = 0 ;
            SET @sI = 1 ;
      
            SET @sql = @sql + 'insert into t values('
            WHILE ( 1 = 1 ) 
                BEGIN
                    SET @eI = CHARINDEX(',', @s, @sI) ;
                    IF ( @eI = 0 ) 
                        BEGIN
                            SET @eI = LEN(@s) + 1 ;
                            SET @break = 1 ;
                        END
                    SET @ss = SUBSTRING(@s, @sI, @eI - @sI) ;
                    SET @sql = @sql + @ss + ','
                    SET @sI = @eI + 1 ;
                    --PRINT @ss ;
                    IF ( @break = 1 ) 
                        BREAK ;
                END
            SET @sql = SUBSTRING(@sql, 1, LEN(@sql) - 1) + ');'
            --PRINT @sql ;
             
            IF ( @b = 1 ) 
                BEGIN
                    BREAK
                END
        END
        
      PRINT @sql ; 

转载于:https://www.cnblogs.com/tabin/p/3224590.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值