桃李不言,下自成蹊;软件工程师,非某语言的程序员

SQL Serve中实现字符串分割(split)的功能函数

CREATE FUNCTION SPLIT (
@str_in  VARCHAR(8000),
@separator VARCHAR(4) )
RETURNS @strtable TABLE (strval  VARCHAR(8000))
AS
BEGIN

DECLARE
 
@Occurrences INT,
 
@Counter INT,
 
@tmpStr VARCHAR(8000)

 
SET @Counter = 0
        
IF SUBSTRING(@str_in,LEN(@str_in),1<> @separator 
              
SET @str_in = @str_in + @separator

 
SET @Occurrences = (DATALENGTH(REPLACE(@str_in,@separator,@separator+'#')) -  DATALENGTH(@str_in))/ DATALENGTH(@separator)
 
SET @tmpStr = @str_in

 
WHILE @Counter <= @Occurrences 
 
BEGIN
  
SET @Counter = @Counter + 1
  
INSERT INTO @strtable
  
valueS ( SUBSTRING(@tmpStr,1,CHARINDEX(@separator,@tmpStr)-1))

  
SET @tmpStr = SUBSTRING(@tmpStr,CHARINDEX(@separator,@tmpStr)+1,8000)
  
  
IF DATALENGTH(@tmpStr= 0
   
BREAK
  
 
END
 
RETURN 
END
输入字符串返回表。
调用
select dbo.split('需要分割的字符串','分割符号')
posted @ 2007-02-08 08:28  假正经哥哥  阅读(502)  评论(0编辑  收藏  举报