当前位置: 网学 > 编程文档 > SQL SERVER > 正文

Sql Server 拆分字符串函数

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/19
下载{$ArticleTitle}原创论文样式

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

 

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号