SQL SPLIT2

CREATE   FUNCTION  F_SQLSERVER_SPLIT( @Long_str   varchar ( 8000 ), @split_str   varchar ( 100 ))    
SQL  SPLIT2 RETURNS    @tmp   TABLE (        
SQL  SPLIT2     ID           inT       IDENTITY   PRIMARY   KEY ,      
SQL  SPLIT2     short_str    varchar ( 8000 )    
SQL  SPLIT2 )    
SQL  SPLIT2 AS    
SQL  SPLIT2 BEGIN    
SQL  SPLIT2      DECLARE   @long_str_Tmp   varchar ( 8000 ), @short_str   varchar ( 8000 ), @split_str_length   int    
SQL  SPLIT2      SET   @split_str_length   =   LEN ( @split_str )    
SQL  SPLIT2      IF   CHARINDEX ( @split_str , @Long_str ) = 1  
SQL  SPLIT2           SET   @long_str_Tmp = SUBSTRING ( @Long_str , @split_str_length + 1 , LEN ( @Long_str ) - @split_str_length )
SQL  SPLIT2      ELSE 
SQL  SPLIT2           SET   @long_str_Tmp = @Long_str 
SQL  SPLIT2      IF   CHARINDEX ( REVERSE ( @split_str ), REVERSE ( @long_str_Tmp )) > 1     
SQL  SPLIT2          SET   @long_str_Tmp = @long_str_Tmp + @split_str     
SQL  SPLIT2      ELSE    
SQL  SPLIT2          SET   @long_str_Tmp = @long_str_Tmp     
SQL  SPLIT2      IF   CHARINDEX ( @split_str , @long_str_Tmp ) = 0 
SQL  SPLIT2          Insert   INTO   @tmp   select   @long_str_Tmp  
SQL  SPLIT2      ELSE 
SQL  SPLIT2          BEGIN 
SQL  SPLIT2              WHILE   CHARINDEX ( @split_str , @long_str_Tmp ) > 0     
SQL  SPLIT2                  BEGIN    
SQL  SPLIT2                      SET   @short_str = SUBSTRING ( @long_str_Tmp , 1 , CHARINDEX ( @split_str , @long_str_Tmp ) - 1 )    
SQL  SPLIT2                      DECLARE   @long_str_Tmp_LEN   INT , @split_str_Position_END   int    
SQL  SPLIT2                      SET   @long_str_Tmp_LEN   =   LEN ( @long_str_Tmp )    
SQL  SPLIT2                      SET   @split_str_Position_END   =   LEN ( @short_str ) + @split_str_length     
SQL  SPLIT2                      SET   @long_str_Tmp = REVERSE ( SUBSTRING ( REVERSE ( @long_str_Tmp ), 1 , @long_str_Tmp_LEN -@split_str_Position_END ))
SQL  SPLIT2                      IF   @short_str <> ''   Insert   INTO   @tmp   select   @short_str     
SQL  SPLIT2                  END            
SQL  SPLIT2          END 
SQL  SPLIT2      RETURN      
SQL  SPLIT2 END

上一篇:20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结


下一篇:网易2019校招内推编程题-俄罗斯方块-C++实现