因有一段時日...忘了當初從哪找到的
感謝分享的人
修改部分:
1.回傳String,所以第三欄取第N個
2.若為 0 回傳全部
CREATE FUNCTION [dbo].[Split] ( @Words nvarchar(MAX)/*原始字串*/ , @splitStr varchar(50) /*分割字元*/ , @rowNumber int /*取第n個*/ ) RETURNS nvarchar(MAX) WITH EXECUTE AS CALLER AS BEGIN Declare @word nvarchar(max) Declare @TempStr nvarchar(MAX) Declare @i int =1 WHILE (CHARINDEX(@splitStr,@Words)>0)/*@Words有包含分割字元就一直執行迴圈*/ BEGIN Set @TempStr=SUBSTRING(@Words,1,CHARINDEX(@splitStr,@Words)-1)/*取出最前面的word*/ If (@rowNumber=0 or @i=@rowNumber) begin set @word = @TempStr end Set @Words = REPLACE(@Words,@TempStr+@splitStr,'')/*把最前面的word加上分割字元後,取代為空字串再指派回給@Words*/ set @i= @i+1 END/*End While*/ IF(LEN(RTRIM(LTRIM(@Words)))>0 And CHARINDEX(@splitStr,RTRIM(LTRIM(@Words)))=0) /*@Words有值但沒有分割字元,表示此為最後一個word*/ Begin Set @TempStr=@Words /*取出word*/ If (@rowNumber=0 or @i=@rowNumber) begin set @word=@TempStr end End /*End IF*/ RETURN @word/*回傳table變數*/ END