将SQL Server拆分为不同的列

将SQL Server拆分为不同的列,sql,sql-server,parsing,split,Sql,Sql Server,Parsing,Split,我在表格的一列中有如下数据: cpc > cpc > organic cpc > organic >cpc mail > cpc > organic 如何使用“>”作为分隔符将数据拆分为不同的列?这是一个著名的问题。您可以通过CLR导入函数使用正则表达式,但这里非常有用。您可以使用的Alter spliting是您需要按列准确地显示数据。可能您也可以这样做 SELECT PARSENAME(REPLACE(String,'>','.'),1)

我在表格的一列中有如下数据:

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

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

这是一个著名的问题。您可以通过CLR导入函数使用正则表达式,但这里非常有用。您可以使用的Alter spliting是您需要按列准确地显示数据。

可能您也可以这样做

SELECT 
    PARSENAME(REPLACE(String,'>','.'),1) AS 'col1' ,
    PARSENAME(REPLACE(String,'>','.'),2) AS 'col2' ,
    PARSENAME(REPLACE(String,'>','.'),3) AS 'col3'
FROM tbl 
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

因此,当我在链接中使用该脚本时,如何从某个列生成拆分函数?当我尝试从fn_CSVToTable Select Column from Table中选择*时,它不起作用