如何在sql server中的多列中拆分字符串

时间:2015-08-21 08:07:25

标签: sql sql-server

我有字符串" 1:182:1,1:195:2,1:213:1"。 我用''来拼写字符串。在不同的行。现在我希望每行单列在同一行的3个不同列中分割。

我尝试使用

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

但它的输出是 (No column name) (No column name) 1 182:1 1 195:2 1 213:1

但我希望它是

Column1 Column2 Column3
1       182     1     

所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分: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

这应该可以了..让我知道它是否有帮助

答案 1 :(得分:0)

这是一种方法但受sql注入

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

select @s='1:182:1'

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

exec('select '+@data)