分隔符上的SQL拆分逗号分隔列

这是一个split函数,它可以应用为dbo.Split('sf,we,fs,we',',') ,当我将字符串更改为列名时它不起作用,例如dbo.Split(table.columnName,',')

 Select * from dbo.Split('dirk@test.com','@') 

是有效的但是

 Select * from dbo.Split((Select Email from Users),'@') 

有一条错误消息:

 Msg 102, Level 15, State 1, Line 1 Incorrect syntax near '('. Msg 102, Level 15, State 1, Line 1 Incorrect syntax near ',' 

function在这里:

 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION [dbo].[Split] (@String varchar(8000), @Delimiter char(1)) returns @temptable TABLE (items varchar(8000)) as begin declare @idx int declare @slice varchar(8000) select @idx = 1 if len(@String)0) insert into @temptable(Items) values(@slice) set @String = right(@String,len(@String) - @idx) if len(@String) = 0 break end return end 

它指的是: SQL 2005在分隔符上拆分逗号分隔列

或者有人可以给我一个类似的function,可以将一列分成两列

那是因为函数返回了一个TABLE。

 SELECT Split(myColumn) FROM myTable 

意思是

 SELECT myOutputTableFromSplit FROM myTable 

这意味着,从表中返回一个表并且SQL无法做到这一点。