/*實做 Split 並以 Table 回傳 */
// ==============================================
Create FUNCTION [dbo].[SplitStr] (
    @words nvarchar(MAX), /*原始字串*/
    @splitStr nvarchar(MAX) /*分割字元*/
)

RETURNS @ResultTable TABLE ( [word] nvarchar(MAX) NULL )

BEGIN
    Declare @tempStr nvarchar(MAX)

    While(CHARINDEX(@splitStr,@words)>0) /*@Words有包含分割字元就一直執行迴圈*/
    BEGIN
        /*取出最前面的word*/
        Set @tempStr=Substring(@words,1,CHARINDEX(@splitStr,@words)-1)

        Insert into @ResultTable (word) Values (@tempStr)
        
        /*把最前面的word加上分割字元後,取代為空字串再指派回給@Words*/
        Set @words = Replace(@words,@tempStr+@splitStr,'')
    END

    /*@Words有值但沒有分割字元,表示此為最後一個word*/
    If(Len(RTRIM(LTRIM(@words)))>0 AND

        CHARINDEX(@splitStr,RTRIM(LTRIM(@words)))=0)
    Begin
        Set @tempStr=@words
        Insert into @ResultTable (word) Values (@tempStr)
    End

    Return /*回傳table變數*/
END

go

// ==============================================

Declare @tb TABLE ( [num] int IDENTITY(1,1), [word] nvarchar(max) NULL )
Declare @str nvarchar(1000) /*關鍵字字串*/

/*關鍵字字串*/
select @str= 'A、B、C、D'

/* 使用方法 ↓↓↓ */
Insert into @tb select * from dbo.SplitStr( @str, '、' )

case 1 :
    select * from @tb

case 2 : ( 條件式搜尋)
    select word from @tb T where T.num=1

 

 By eat

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 cycu98 的頭像
    cycu98

    cycu98的部落格

    cycu98 發表在 痞客邦 留言(0) 人氣()