[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
留言
張貼留言