SQL Server 完美SPLIT函数--SQL Server Split函数
SQL Server 完美SPLIT函数--
Author:zc_0101 
SQL Server 完美SPLIT函数--
说明:
SQL Server 完美SPLIT函数--
支持分割符多字节
SQL Server 完美SPLIT函数--
使用方法 
SQL Server 完美SPLIT函数--
Select * FROM DBO.F_SQLSERVER_SPLIT('1203401230105045','0')    
SQL Server 完美SPLIT函数--
select * from DBO.F_SQLSERVER_SPLIT('abc1234a12348991234','1234') 
SQL Server 完美SPLIT函数--
Select * from DBO.F_SQLSERVER_SPLIT('ABC',',')   
SQL Server 完美SPLIT函数
 
 1 CREATE FUNCTION F_SQLSERVER_SPLIT(@Long_str NVARCHAR(MAX),@split_str NVARCHAR(100))    
 2 RETURNS  @tmp TABLE(        
 3     ID          inT     IDENTITY PRIMARY KEY,      
 4     short_str   NVARCHAR(MAX)    
 5 )    
 6 AS   
 7 BEGIN   
 8     DECLARE @short_str NVARCHAR(MAX),@split_str_length int,@split_str_Position_Begin int
 9     SET @split_str_length = LEN(@split_str) 
10     SET @Long_str=REPLACE(REPLACE(@Long_str,CHAR(10),''),CHAR(13),'')
11     IF CHARINDEX(@split_str,@Long_str)=1 
12          SET @Long_str=STUFF(@Long_str,1,@split_str_length,'')
13     IF CHARINDEX(@split_str,@Long_str)=0
14         INSERT INTO @tmp SELECT @Long_str 
15     ELSE
16         BEGIN
17             WHILE 1>0    
18                 BEGIN   
19                     SET @split_str_Position_Begin = CHARINDEX(@split_str,@Long_str)
20                     SET @short_str=LEFT(@Long_str,@split_str_Position_Begin-1) 
21                     IF @short_str<>'' INSERT INTO @tmp SELECT @short_str  
22                     SET @Long_str=STUFF(@Long_str,1,@split_str_Position_Begin+@split_str_length-1,'')
23                     SET @split_str_Position_Begin = CHARINDEX(@split_str,@Long_str)
24                     IF @split_str_Position_Begin=0 
25                     BEGIN
26                         IF LTRIM(@Long_str)<>''
27                             INSERT INTO @tmp SELECT @Long_str 
28                         BREAK
29                     END
30                 END           
31         END
32     RETURN     
33 END 

 

 

相关文章: