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

时间:2009-08-13 17:49:13

标签: c# 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 ','

功能在这里:

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)<1 or @String is null  return       

       while @idx!= 0       
       begin       
           set @idx = charindex(@Delimiter,@String)       
           if @idx!=0       
               set @slice = left(@String,@idx - 1)       
           else       
              set @slice = @String       

           if(len(@slice)>0)  
               insert into @temptable(Items) values(@slice)       

           set @String = right(@String,len(@String) - @idx)       
           if len(@String) = 0 break       
       end   
   return       
   end

它指的是:SQL 2005 Split Comma Separated Column on Delimiter

或者某人可以给我一个类似的功能,可以将一列拆分为两个

1 个答案:

答案 0 :(得分:1)

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

SELECT Split(myColumn) FROM myTable

意味着

SELECT myOutputTableFromSplit FROM myTable

这意味着,从桌子和表格中返回一张桌子。 SQL无法做到这一点。