My t-sql split function

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go



ALTER FUNCTION [dbo].[JoeySplitWords](@text nvarchar(4000))
RETURNS @words TABLE (word nvarchar(4000))
AS
BEGIN
    
DECLARE @wordBegin smallint,
        
@wordEnd smallint,
        
@word nvarchar(4000)

    
SELECT @wordBegin = 1

    
WHILE @wordBegin <= LEN(@text)
    
BEGIN
        
SELECT @wordEnd = CHARINDEX(','@text@wordBegin- 1
        
IF(@wordEnd - @wordBegin < -1)-- not found
        BEGIN
          
SELECT @word = LTRIM(RTRIM(SUBSTRING(@text@wordBeginLEN(@text- @wordBegin + 1)))
          
INSERT INTO @words(word) VALUES(@word)
          
BREAK
        
END
        
ELSE IF(@wordEnd - @wordBegin = -1)-- found ','
        BEGIN
          
SELECT @wordBegin = @wordEnd + 2
        
END
        
ELSE-- found
        BEGIN
          
SELECT @word = LTRIM(RTRIM(SUBSTRING(@text@wordBegin@wordEnd - @wordBegin + 1)))
          
INSERT INTO @words(word) VALUES(@word)
          
SELECT @wordBegin = @wordEnd + 2
        
END
    
END
    
    
RETURN
END



posted @ 2008-04-16 03:15  N/A2011  阅读(276)  评论(0编辑  收藏  举报