在数据库中,经常用到了将一定格式的字符串解析的问题。以前写过类似的方法,今天又重新写了一个,发上来共享给大家。


  1. Create function [dbo].[Func_SplitStringToTable]   
    (  
        -- 需要解析的字符串  
        @str nvarchar(max),  
        -- 分隔符  
        @split varchar(10)  
    )  
    returns @t Table (c1 varchar(100))  
    as  
        begin  
            declare @i int  
            declare @s int      
            set @i=1      
            set @s=1      
            while(@i>0)  
                begin              
                    set @i=charindex(@split,@str,@s)          
                    if(@i>0)          
                        begin              
                            insert @t(c1) values(substring(@str,@s,@i-@s))  
                        end             
                    else   
                        begin              
                            insert @t(c1) values(substring(@str,@s,len(@str)-@s+1))          
                        end          
                    set @s = @i + 1         
                end      
            return  
        end
Create function [dbo].[Func_SplitStringToTable] 
(
	-- 需要解析的字符串
	@str nvarchar(max),
	-- 分隔符
	@split varchar(10)
)
returns @t Table (c1 varchar(100))
as
	begin
	    declare @i int
	    declare @s int    
	    set @i=1    
	    set @s=1    
	    while(@i>0)
	        begin            
				set @i=charindex(@split,@str,@s)        
				if(@i>0)        
					begin            
						insert @t(c1) values(substring(@str,@s,@i-@s))
	                end           
	            else 
	                begin            
						insert @t(c1) values(substring(@str,@s,len(@str)-@s+1))        
	                end        
				set @s = @i + 1       
			end    
	    return
    end





使用的时候如下:


select * from dbo.Func_SplitStringToTable('1,15,13',',');