[MS SQL] 字串分割後轉成Table
之前在網路上找到一個資料庫函數,還蠻常用到的,寫下來記錄一下。
(因為時間太久實在忘記出處了,若知道者請告知一下,我會馬上註明出處。)
輸入字串:A001,A002,A003
輸 出:
sno data
------------
1 A001
2 A002
3 A003
(因為時間太久實在忘記出處了,若知道者請告知一下,我會馬上註明出處。)
輸入字串:A001,A002,A003
輸 出:
sno data
------------
1 A001
2 A002
3 A003
CREATE Function [dbo].[uf_split_str] ( @InStr nvarchar(2000) , --@InStr: 輸入字串。EX: A001,A002,A003 @s_char nvarchar(1) --@s_char: 分割字元。EX: ',' ) Returns @tb Table ( sno int , data nvarchar(100) ) As Begin Set @InStr = @s_char + @InStr + @s_char; Declare @p1 Int , @p2 Int , @data nvarchar(100) , @sno int; Set @p1 = -1 ; Set @p2 = -1 ; Set @data = '' ; Set @sno = 0; While ( 0 Not In (@P1,@P2) ) Begin Set @p1 = CharIndex(@s_char,@InStr,@p1+1); Set @p2 = CharIndex(@s_char,@InStr,@p1+1); If ( 0 In (@p1,@p2) ) Break; Set @data = SubString(@InStr,@p1+1,@p2-@p1-1); if ( @data <> '' ) Begin Set @sno = @sno +1; Insert Into @tb ( sno , data ) Values ( @sno , @data ) End End Return End
留言
張貼留言