数据库中Split功能的实现--自定义函数(源码)

    技术2022-05-11  48

     

    ****案例:

    现有一字符串 'aaaa,bbbb,cccc,'  ,根据“,”拆分字符串,并返回结果集。

    ****方案:

    下面给出了一个通用的自定义函数的源码,仅供参考。

    ****注意:

    字符串中如果设计到多国语言文字(韩文、日文),请自己进行灵活的处理。

    ****源码:

    if   exists  ( select   *   from  dbo.sysobjects  where  id  =   object_id (N ' [dbo].[fn_Comm_SplitStr] ' and  xtype  in  (N ' FN ' , N ' IF ' , N ' TF ' )) drop   function   [ dbo ] . [ fn_Comm_SplitStr ] GO SET  QUOTED_IDENTIFIER  OFF   GO SET  ANSI_NULLS  OFF   GO    /*  ********************************************  function    :    split string ,return table    create by    :       create at    :    2007-02-10     modify by    :       modify at    :       remark        :         case        :   SELECT * FROM DBO.fn_Comm_SplitStr('aaaa,bbbb,cccc,',',')  ********************************************  */        CREATE         FUNCTION  DBO.fn_Comm_SplitStr (     @SOURCE_STR   NVARCHAR ( 4000 )    , @SEPARATE_STR   VARCHAR ( 10 )  )   RETURNS   @TSTR   TABLE    (    STR1   NVARCHAR ( 200 )    , SORT   INT   )   AS    BEGIN        DECLARE      @I   INT               , @J   INT        SELECT      @SOURCE_STR   =   RTRIM ( LTRIM ( @SOURCE_STR ))              ,  @I   =   CHARINDEX ( @SEPARATE_STR @SOURCE_STR )              ,  @J   =   0        WHILE   @I >= 1            BEGIN                  INSERT   @TSTR  (STR1,SORT)  VALUES ( LEFT ( @SOURCE_STR , @I - 1 ),  @J   +   1 )               SELECT   @SOURCE_STR = SUBSTRING ( @SOURCE_STR , @I + 1 , LEN ( @SOURCE_STR ) - @I )                      ,  @I = CHARINDEX ( @SEPARATE_STR , @SOURCE_STR )                      ,  @J   =   @J   +   1            END        IF   @SOURCE_STR <> ''             INSERT   @TSTR  (STR1,SORT)  VALUES ( @SOURCE_STR @J   +   1 )           RETURN   END    GO SET  QUOTED_IDENTIFIER  OFF   GO SET  ANSI_NULLS  ON   GO  

    最新回复(0)