/*實做 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
留言列表