SQL Server stordedprocedure 使用IN的寫法
时间:2010-12-14 来源:wangman
先在SQL SERVER建立一個字串拆解成datatable 的StoredProcedure,然後在其他的StoredProcedure呼叫此StoredProcedure即可。
1.SQL SERVER 連接字串拆解成Datatable StoredProcedure
範例:"我,他,你"
結果:
我
他
你

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("我,他,你",','))
相关阅读 更多 +