当前位置:编程文档 >> SQL SERVER >> Sql Server 拆分字符串函数
首页

Sql Server 拆分字符串函数

所属类别:SQL SERVER
推荐指数:★★★☆
文档人气:96
本周人气:4
发布日期:2008-2-18

CREATE   FUNCTION uf_StrSplit '1.1.2.50','.'
(@origStr varchar(7000),   --待拆分的字符串
@markStr varchar(100))    --拆分标记,如','
RETURNS @splittable table
(
str_id    varchar(4000) NOT NULL, --编号ID
string    varchar(2000) NOT NULL --拆分后的字符串
)
AS
BEGIN
declare @strlen int,@postion int,@start int,@sublen int,@TEMPstr varchar(200),@TEMPid int
SELECT @strlen=LEN(@origStr),@start=1,@sublen=0,@postion=1,@TEMPstr='',@TEMPid=0

if(RIGHT(@origStr,1)<>@markStr )
begin
   set @origStr = @origStr + @markStr
end
WHILE((@postion<=@strlen) and (@postion !=0))
BEGIN
   IF(CHARINDEX(@markStr,@origStr,@postion)!=0)
   BEGIN
    SET @sublen=CHARINDEX(@markStr,@origStr,@postion)-@postion;
   END
   ELSE
   BEGIN
    SET @sublen=@strlen-@postion+1;

   END
   IF(@postion<=@strlen)
   BEGIN
    SET @TEMPid=@TEMPid+1;
    SET @TEMPstr=SUBSTRING(@origStr,@postion,@sublen);
    INSERT INTO @splittable(str_id,string) values(@TEMPid,@TEMPstr)
    IF(CHARINDEX(@markStr,@origStr,@postion)!=0)
    BEGIN
     SET @postion=CHARINDEX(@markStr,@origStr,@postion)+1
    END
    ELSE
    BEGIN
     SET @postion=@postion+1
    END
   END
END
RETURN
END

 


例如:select * from uf_StrSplit('1,1,2,50',',')

输出结果:str_id      string

                     1             1
                     2             1
                     3             2
                     4            50

 

文档说明:

     

相关文档


读取评论列表……