zoukankan      html  css  js  c++  java
  • 拆分字符串的自定义SQL函数,返回包含拆分后各子符的表

    ALTER FUNCTION [dbo].[func_StrSplit] (

     /* 待拆分的字符串  */

     @origStr varchar(7000),

     /* 拆分标记,如','  */

     @markStr varchar(100)

    )  

    RETURNS @splittable table        /*返回一个表*/

    (

     /* 编号ID */

     str_id   varchar(4000) NOT NULL,

     /* 拆分后的字符串  */

     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

     

  • 相关阅读:
    ASP.NET读入文件(以txt为例)
    二叉树的相关规律公式
    HashTable的一点儿常识
    ASP.NET页面跳转方式及页面传值方式
    事件的那些事儿
    程序集和项目、命名空间、动态链接库的区别
    EventHandlerList的一些发现
    《Ajax基础教程》电子版下载
    数据库优化设计
    创业者的自我训练:
  • 原文地址:https://www.cnblogs.com/wiseant/p/1866086.html
Copyright © 2011-2022 走看看