| 
                
                    | 
                            
                                | Author | Topic |  
                                    | boreddyPosting Yak  Master
 
 
                                        172 Posts | 
                                            
                                            |  Posted - 2009-03-03 : 06:38:29 
 |  
                                            | i will get a in parameter as comma sparated stringthat i need to show out put as a set of rowsexample inparameter is 1,2,3,4,23,45,.....i need to get like this12342345....is the any function to get like this thanks in advance |  |  
                                    | SwePesoPatron Saint of Lost Yaks
 
 
                                    30421 Posts |  |  
                                    | bklrMaster Smack Fu Yak Hacker
 
 
                                    1693 Posts | 
                                        
                                          |  Posted - 2009-03-03 : 06:50:40 
 |  
                                          | [code]declare @str1 varchar(max)set @str1= '1,2,3,4,23,45'SELECT	SUBSTRING(@str1,charindex(',',@str1,v.number)+1,abs(charindex(',',@str1,charindex(',',@str1,v.number)+1)-charindex(',',@str1,v.number))-1)as valueFROM			master..spt_values AS v WHERE v.Type = 'P'			AND v.number > 0			AND v.number <= len(@str1)			AND substring(',' + @str1, v.number, 1) = ','[/code] |  
                                          |  |  |  
                                    | Nageswar9Aged Yak Warrior
 
 
                                    600 Posts | 
                                        
                                          |  Posted - 2009-03-03 : 07:42:37 
 |  
                                          | Declare @Str1 VARCHAR(100) Select @Str1 = '1,2,3,4,56,45'Select @Str1 = @Str1 + ',';WITH csvtbl(i, j)AS(	SELECT 0, j = CHARINDEX(',', @Str1)	UNION ALL	SELECT CAST(j + 1 AS INT), j = CHARINDEX(',', @Str1, j + 1) 	FROM csvtbl	WHERE CHARINDEX(',', @Str1, j + 1) <> 0)SELECT  SUBSTRING(@Str1, C.i, C.j-i) from csvtbl c |  
                                          |  |  |  
                                    | Mangal PardeshiPosting Yak  Master
 
 
                                    110 Posts |  |  
                                    | Nageswar9Aged Yak Warrior
 
 
                                    600 Posts | 
                                        
                                          |  Posted - 2009-03-03 : 07:45:07 
 |  
                                          | small modification in ur query, quote:Originally posted by Mangal Pardeshi
 
 declare @str varchar(max)set @str= '1,2,3,4,23,45';WITH Mangal AS (    SELECT         CAST('<i>' + REPLACE(@Str, ',', '</i><i>') + '</i>' AS XML) AS Id)SELECT     Split.a.value('.', 'VARCHAR(10)') AS NamesFROM MangalCROSS APPLY Id.nodes('//i') Split(a)Mangal Pardeshihttp://mangalpardeshi.blogspot.com
 |  
                                          |  |  |  
                                    | Mangal PardeshiPosting Yak  Master
 
 
                                    110 Posts | 
                                        
                                          |  Posted - 2009-03-03 : 08:06:48 
 |  
                                          |  Mangal Pardeshihttp://mangalpardeshi.blogspot.com |  
                                          |  |  |  
                                    | Nageswar9Aged Yak Warrior
 
 
                                    600 Posts |  |  
                                    | visakh16Very Important crosS Applying yaK Herder
 
 
                                    52326 Posts | 
                                        
                                          |  Posted - 2009-03-03 : 09:33:42 
 |  
                                          | quote:this has limitation. if number of delimited values exceeds the number of available records in spt_values table, then this wont work.Originally posted by bklr
 
 declare @str1 varchar(max)set @str1= '1,2,3,4,23,45'SELECT	SUBSTRING(@str1,charindex(',',@str1,v.number)+1,abs(charindex(',',@str1,charindex(',',@str1,v.number)+1)-charindex(',',@str1,v.number))-1)as valueFROM			master..spt_values AS v WHERE v.Type = 'P'			AND v.number > 0			AND v.number <= len(@str1)			AND substring(',' + @str1, v.number, 1) = ','
 |  
                                          |  |  |  
                                    | bklrMaster Smack Fu Yak Hacker
 
 
                                    1693 Posts | 
                                        
                                          |  Posted - 2009-03-03 : 23:12:37 
 |  
                                          | quote:yes visakh,i works upto 2047 delimited values only.Originally posted by visakh16
 
 quote:this has limitation. if number of delimited values exceeds the number of available records in spt_values table, then this wont work.Originally posted by bklr
 
 declare @str1 varchar(max)set @str1= '1,2,3,4,23,45'SELECT	SUBSTRING(@str1,charindex(',',@str1,v.number)+1,abs(charindex(',',@str1,charindex(',',@str1,v.number)+1)-charindex(',',@str1,v.number))-1)as valueFROM			master..spt_values AS v WHERE v.Type = 'P'			AND v.number > 0			AND v.number <= len(@str1)			AND substring(',' + @str1, v.number, 1) = ','
 
 |  
                                          |  |  |  
                                    | Michael Valentine JonesYak DBA Kernel (pronounced Colonel)
 
 
                                    7020 Posts | 
                                        
                                          |  Posted - 2009-03-03 : 23:32:08 
 |  
                                          | This is a simple way to do it for strings that are reasonable size, like a few hundred items or less declare @sql varchar(max)set @sql = '1,2,3,4,23,45'set @sql = replace(@sql,',',' union all select ')execute ('select Number = '+@sql+' order by 1')Number-----------12342345(6 row(s) affected)CODO ERGO SUM |  
                                          |  |  |  
                                |  |  |  |