0

I have string "1:182:1,1:195:2,1:213:1". I spllited the string with ',' in different rows. Now I want each rows single column to be splitted in 3 different columns in same row.

I tried using

     SELECT   LEFT(ThemeProperty, CHARINDEX(':', ThemeProperty) - 1) ,
            RIGHT(ThemeProperty,
                  LEN(ThemeProperty) - CHARINDEX(':', ThemeProperty))
   FROM     #tempThemeProperty

But its output is (No column name) (No column name) 1 182:1 1 195:2 1 213:1

But I want it to be

Column1 Column2 Column3
1       182     1     

So any help would be appreciated.

2 Answers2

2
DECLARE @Tmp TABLE (Id INT,Name VARCHAR(20)) 
INSERT @Tmp SELECT 1,'182:1' 
INSERT @Tmp SELECT 2,'195:2' 
INSERT @Tmp SELECT 3,'213:1' 


--Using PARSENAME 

SELECT Id, 
       PARSENAME(REPLACE(Name,':','.'),2) Value1, 
       PARSENAME(REPLACE(Name,':','.'),1) Value2 
FROM @Tmp

This should be able to di it.. Let me know if it helps

d_luffy_de
  • 967
  • 1
  • 9
  • 24
0

This is one method but subject to sql injection

declare @s varchar(2000),@data varchar(2000)

select @s='1:182:1'

select @data=''''+replace(@s,':',''',''')+'''' 

exec('select '+@data)
Madhivanan
  • 13,470
  • 1
  • 24
  • 29