參考網址:http://www.dotblogs.com.tw/dotjum/archive/2008/04/08/2618.aspx
先在SQL SERVER建立一個字串拆解成datatable 的StoredProcedure,然後在其他的StoredProcedure呼叫此StoredProcedure即可。
1.SQL SERVER 連接字串拆解成Datatable StoredProcedure
範例:"我,他,你"
結果:
我
他
你
代码
1
ALTER
Function
[dbo].[fn_slip_str]
2 (
3 @ InStr nvarchar( 2000 ),
4 @s_char nvarchar( 1 )
5 )
6 Returns @tb Table
7 (
8 sno int ,
9 data nvarchar( 100 )
10 )
11 As
12 Begin
13 /* 依據傳入字元進行字串分割,回傳Table */
14 /*
15 Declare @ InStr nvarchar( 2000 ) , @s_char nvarchar( 1 );
16 Set @ InStr = ' 字串一,字串2,字串3,字串4';
17 Set @s_char = ' ,';*/
18
19 Set @ InStr = @s_char + @ InStr + @s_char;
20 Declare @p1 Int , @p2 Int , @data nvarchar( 100 ) , @sno int ;
21 Set @p1 = - 1 ; Set @p2 = - 1 ; Set @data = ' ' ; Set @sno = 0;
22 While ( 0 Not In (@P1,@P2) ) Begin
23 Set @p1 = CharIndex(@s_char,@ InStr ,@p1 + 1 );
24 Set @p2 = CharIndex(@s_char,@ InStr ,@p1 + 1 );
25 If ( 0 In (@p1,@p2) )
26 Break;
27 Set @data = SubString(@ InStr ,@p1 + 1 ,@p2 - @p1 - 1 );
28 if ( @data <> ' ' ) Begin
29 Set @sno = @sno + 1 ;
30 Insert Into @tb ( sno , data ) Values ( @sno , @data )
31 End
32 End
33 Return
34 End
35
36
2 (
3 @ InStr nvarchar( 2000 ),
4 @s_char nvarchar( 1 )
5 )
6 Returns @tb Table
7 (
8 sno int ,
9 data nvarchar( 100 )
10 )
11 As
12 Begin
13 /* 依據傳入字元進行字串分割,回傳Table */
14 /*
15 Declare @ InStr nvarchar( 2000 ) , @s_char nvarchar( 1 );
16 Set @ InStr = ' 字串一,字串2,字串3,字串4';
17 Set @s_char = ' ,';*/
18
19 Set @ InStr = @s_char + @ InStr + @s_char;
20 Declare @p1 Int , @p2 Int , @data nvarchar( 100 ) , @sno int ;
21 Set @p1 = - 1 ; Set @p2 = - 1 ; Set @data = ' ' ; Set @sno = 0;
22 While ( 0 Not In (@P1,@P2) ) Begin
23 Set @p1 = CharIndex(@s_char,@ InStr ,@p1 + 1 );
24 Set @p2 = CharIndex(@s_char,@ InStr ,@p1 + 1 );
25 If ( 0 In (@p1,@p2) )
26 Break;
27 Set @data = SubString(@ InStr ,@p1 + 1 ,@p2 - @p1 - 1 );
28 if ( @data <> ' ' ) Begin
29 Set @sno = @sno + 1 ;
30 Insert Into @tb ( sno , data ) Values ( @sno , @data )
31 End
32 End
33 Return
34 End
35
36
2.其他StoredProcedure要使用時,可將傳進來的字串拆解成datatable即可使用動態使用In
範例:XX(欄位) IN (Select Data From dbo.fn_slip_str("我,他,你",','))