自己寫了一個遊標查詢多條件的sql語句

自己寫了一個遊標查詢多條件的sql語句

 

DECLARE   @s   CHAR ( 200 )
Declare   @where   varchar ( 200 )
Declare   @col   char ( 10 )
Declare   @sql   varchar ( 200 )
Set   @col = ' col013 '
set   @where   =   ''
set   @sql   =   ''
SET   @s = ' 14 11 '
Declare   @str   varchar ( 100 )
Declare  my_cur  Cursor
For   SELECT   ' , '   +  a  +   ' , '  k  FROM  dbo.Split( @s , '   ' )
OPEN  my_cur
FETCH   NEXT   FROM  my_cur  into   @str
WHILE   @@FETCH_STATUS   =   0
Begin
   
--  SELECT col001,col013 FROM d_table_2 where ','+col013+',' like '%'+@str+'%'
     Set   @where   = @where +  dbo.trim( @col ) + '  like  '   +   ''' % ' + @str + ' % ''' + '  and  '
 
-- Set @where = 'tet'
     FETCH   NEXT   FROM  my_cur  into   @str
end
set   @where =   left ( @where , len ( @where -   4 )
-- select @where

set   @sql = N ' SELECT col001,col013 FROM d_table_2 where  '   + @where
-- select @sql
exec ( @sql )

   
CLOSE  my_cur
   
DEALLOCATE  my_cur

 

-- ------------------

不用遊標方式

Declare   @fields   VARCHAR ( 1024 )
select   @fields = dbo.trim( isnull ( @fields , '' )) +   ' , '   +  k
from  (( select   top   10  id  as  k  from  part))  as  a

select   @fields


CREATE   Function  Split( @Sql   varchar ( 8000 ), @Splits   varchar ( 10 ))  -- 此函數是別人寫的
returns   @temp   Table  (a  varchar ( 100 ))
As
Begin
Declare   @i   Int
Set   @Sql   =   RTrim ( LTrim ( @Sql ))
Set   @i   =   CharIndex ( @Splits , @Sql )
While   @i   >=   1
Begin
Insert   @temp   Values ( Left ( @Sql , @i - 1 ))
Set   @Sql   =   SubString ( @Sql , @i + 1 , Len ( @Sql ) - @i )
Set   @i   =   CharIndex ( @Splits , @Sql )
End  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值