• SQL Server 完美SPLIT函数


    -- SQL Server Split函数 
     --
     Author:zc_0101  
     --
     说明: 
     --
     支持分割符多字节 
     --
     使用方法  
     --
     Select * FROM DBO.F_SQLSERVER_SPLIT('1203401230105045','0')     
     --
     select * from DBO.F_SQLSERVER_SPLIT('abc1234a12348991234','1234')  
     --
     Select * from DBO.F_SQLSERVER_SPLIT('ABC',',')    
     
     
     
     
    CREATE   FUNCTION  F_SQLSERVER_SPLIT( @Long_str   varchar ( 8000 ), @split_str   varchar ( 100 ))    
     
    RETURNS    @tmp   TABLE (        
         ID          
     inT       IDENTITY   PRIMARY   KEY ,      
         short_str   
     varchar ( 8000 )    
     )    
     
    AS    
     
    BEGIN    
         
     DECLARE   @long_str_Tmp   varchar ( 8000 ), @short_str   varchar ( 8000 ), @split_str_length   int    
         
     SET   @split_str_length   =   LEN ( @split_str )    
         
     IF   CHARINDEX ( @split_str , @Long_str ) = 1  
              
     SET   @long_str_Tmp = SUBSTRING ( @Long_str , @split_str_length + 1 , LEN ( @Long_str ) - @split_str_length )
         
     ELSE 
              
     SET   @long_str_Tmp = @Long_str 
         
     IF   CHARINDEX ( REVERSE ( @split_str ), REVERSE ( @long_str_Tmp )) > 1     
             
     SET   @long_str_Tmp = @long_str_Tmp + @split_str     
         
     ELSE    
             
     SET   @long_str_Tmp = @long_str_Tmp     
         
     IF   CHARINDEX ( @split_str , @long_str_Tmp ) = 0 
             
     Insert   INTO   @tmp   select   @long_str_Tmp  
         
     ELSE 
             
     BEGIN 
                 
     WHILE   CHARINDEX ( @split_str , @long_str_Tmp ) > 0     
                     
     BEGIN    
                         
     SET   @short_str = SUBSTRING ( @long_str_Tmp , 1 , CHARINDEX ( @split_str , @long_str_Tmp ) - 1 )    
                         
     DECLARE   @long_str_Tmp_LEN   INT , @split_str_Position_END   int    
                         
     SET   @long_str_Tmp_LEN   =   LEN ( @long_str_Tmp )    
                         
     SET   @split_str_Position_END   =   LEN ( @short_str ) + @split_str_length     
                         
     SET   @long_str_Tmp = REVERSE ( SUBSTRING ( REVERSE ( @long_str_Tmp ), 1 , @long_str_Tmp_LEN - @split_str_Position_END ))
                         
     IF   @short_str <> ''   Insert   INTO   @tmp   select   @short_str     
                     
     END            
             
     END 
         
     RETURN      
     
    END  
  • 相关阅读:
    UIStepper
    UIProgressView
    Python——GUI编程 利息计算器 作业9(python programming)
    Python——GUI编程(python programming)
    麻烦的聚餐(最长递增子序列+二分优化)
    奶牛渡河(dp)
    POJ 1182-食物链 [并查集] 《挑战程序设计竞赛》2.4
    [2013百度软件研发笔试题] 求字符串中连续出现同样字符的最大值
    Java OCR tesseract 图像智能字符识别技术
    ORA-00904:&quot;T1&quot;.&quot;AREA_ID&quot; :标识符无效
  • 原文地址:https://www.cnblogs.com/tongdengquan/p/6090528.html
Copyright © 2020-2023  润新知