分成不同的SQL Server列

时间:2015-04-25 18:48:03

标签: sql sql-server parsing split

我的表格中的数据就像这样:

cpc > cpc > organic
cpc > organic >cpc
mail > cpc > organic

如何使用'>'将数据拆分到不同的列?作为分隔符?

3 个答案:

答案 0 :(得分:2)

这是一个着名的问题。您可以通过CLR导入函数使用Regex,但这里非常有用script。改变分割你可以使用PIVOT/UNPIVOT,你需要完全按照列进行分割。

答案 1 :(得分:0)

SELECT 
    PARSENAME(REPLACE(String,'>','.'),1) AS 'col1' ,
    PARSENAME(REPLACE(String,'>','.'),2) AS 'col2' ,
    PARSENAME(REPLACE(String,'>','.'),3) AS 'col3'
FROM tbl 

答案 2 :(得分:0)

也许你可以这样做

declare @t table (name varchar(30))
insert into @t (name)values ('cpc > cpc1 > organic'),('cpc > organic1 >cpc')
select 
SUBSTRING(name,0,CHARINDEX('>',name))As Col1,
SUBSTRING(name, charindex('>', name)+1, len(name) - CHARINDEX('>', reverse(name)) - charindex('>', name))As Col2,
REVERSE(SUBSTRING(reverse(name),0,CHARINDEX('>',reverse(name))))As Col3
 from @t