close

USE [TEMPDB]
GO
/****** Object:  UserDefinedFunction [dbo].[SplitStr]    Script Date: 2017/7/28 下午 04:32:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


-- =============================================
-- Author:  
-- Create date: 20150212
-- Description: for Split Str

--select [dbo].[SplitStr]('F123456789,Male,台北市松山區,0921111111',',','1','N') ##得到 F123456789
--select [dbo].[SplitStr]('F123456789,Male,台北市松山區,0921111111',',','2','N') ##得到 Male
--select [dbo].[SplitStr]('F123456789,Male,台北市松山區,0921111111',',','3','N') ##得到 台北市松山區
-- =============================================
ALTER FUNCTION [dbo].[SplitStr]

     @InputStr VARCHAR(500),  --拆解字串
  @Delimiter CHAR(1),      --拆解符號
  @Position   int,         --取第幾個位置
  @ItSelf    CHAR(1) = 'N' --回傳本身的資料???
)
RETURNS  VARCHAR(500)
AS
BEGIN

DECLARE @RETURNSTR  varchar(500)
DECLARE @SplitStr VARCHAR(500)
Declare @NextString varchar(500)
Declare @Pos int
Declare @FirstPos int
Declare @PosCnt int

SET @RETURNSTR = @InputStr  --回傳本身的資料
SET @PosCnt = 0

    Set @SplitStr = @InputStr + @Delimiter --這樣若無分隔符號也才能傳回自已本身
 Set @Pos = charindex(@Delimiter, @SplitStr,1) 
    Set @FirstPos = charindex(@Delimiter, @InputStr,1) --若沒有任何的分隔符號,則不用進入拆資料

    While (@FirstPos <> 0)
 Begin 
     
   Set @PosCnt = @PosCnt + 1    
   Set @RETURNSTR = Substring(@SplitStr,1,@Pos-1)  
   Set @SplitStr = substring(@SplitStr,@Pos+1,len(@SplitStr))

   IF @PosCnt =  @Position
   Begin
      RETURN @RETURNSTR
   End  

   Set @Pos = charindex(@Delimiter, @SplitStr) 
  
   IF @Pos =  0
   Begin
      RETURN ''
   End
    
 End

 IF (@ItSelf = 'N')
 BEGIN
  RETURN ''
 END
 ELSE
 BEGIN
     RETURN @InputStr
 END

 RETURN ''
END

 

 

arrow
arrow
    文章標籤
    拆解字串
    全站熱搜
    創作者介紹
    創作者 可樂果公主 的頭像
    可樂果公主

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

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