close

USE [TempDB]
GO
/****** Object:  UserDefinedFunction [dbo].[funSplitToString]    Script Date: 2018/1/30 上午 10:27:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


/*****************************************************************
* Author;
* Create Date:
* Description: 從字串中抽取出一段字串
*
*              若@iBlock = 0, 則回傳全字串
*              若@iBlock過大, 則回傳最後一個Block字串
*              如果找不到分隔符號, 則回傳全字串
*
*****************************************************************/

ALTER FUNCTION [dbo].[funSplitToString]
(
    @String    varchar(8000),
    @Delimiter varchar(10),
    @iBlock    smallint          -- 從1起算
)

Returns varchar(8000)

Begin

    --\ 如果找不到分隔符號, 則回傳全字串
    If (CharIndex(@Delimiter, @String) = 0)
      Begin
          Return @String;
      End

    --\
    Declare @i   smallint = 1;
    Declare @Pos int = 0;
    Declare @Loc int = 1;
    Declare @iCount int = 0;
    --
    If (@iBlock > 1)
      Begin
          While (@i <= 100)
          Begin
              Set @Pos = CharIndex(@Delimiter, @String, @Loc);
              --
              If (@Pos > 0)
                Begin
                    Set @Loc = @Pos + Len(@Delimiter);
                    --
                    Set @iCount = @iCount + 1;
                    --
                    If (@iCount + 1 = @iBlock) Break;
                End
              --
              Set @i = @i + 1;
          End
          --
          If (@iCount + 1 < @iBlock) Return 'Null';
      End

    --
    Set @i   = 1;
    Set @Pos = 0;

    While (@i <= @iBlock)
    Begin
        Set @Pos = CharIndex(@Delimiter, @String);   -- 搜尋 @String 中的 @Delimiter,並在找到時傳回它的開始位置。
        --
        If (@i = @iBlock)
          Begin
              If (@Pos > 0) Set @String = Substring(@String, 1, @Pos - 1);
          End
        Else
          Begin
              Set @String = Substring(@String, @Pos + 1, 8000);
          End
        --
        Set @i = @i + 1;
    End
   
    --\
    Return @String;
End


-- Select dbo.fSplitToString('CHARINDEX 會以輸入的定序為基礎來執行比較。若要執行指定定序的比較,您可以利用 COLLATE,將明確定序套用至輸入上', ';', 1);
--

 

                               Block1               Block2                   Block3                   Block4

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 可樂果公主 的頭像
    可樂果公主

    聽說幸福…在山的那邊 (浪機子)

    可樂果公主 發表在 痞客邦 留言(0) 人氣()