日期:2014-05-19  浏览次数:20410 次

not in 后面如何跟参数?
我有一个sql语句:

...   where   detail   not   in   ( '误工费 ', '加急费 ')

如何把   误工费,加急费   改成参数@a,@b,如果参数数目不定,又改如何处理?

------解决方案--------------------
作成存储过程参数

create proc @s varchar(100)
as
exec ( 'select .... where detail not in( '+@s+ ') ')
------解决方案--------------------
declare @S varchar(4000)
set @S=111,222,33 --如果你是这样传的话
exec ( 'select * from [table] where detail not in( ' ' '+replace(@S, ', ', ' ' ', ' ' ')+ ' ' ') ')

------解决方案--------------------
declare @SQL varchar(8000)
declare @a varchar(20)
declare @b varchar(20)

set @a= '误工费 '
set @b= '加急费 '
set @SQL= '... where detail not in ( ' ' '+@a+ ' ' ', ' ' '+@b+ ' ' ' '
exec(@SQL)

------解决方案--------------------
将数目不定的参数转成 aas,dff,ddd 的形式 用一个参数@a处理
where charindex( ', '+rtrim(detail)+ ', ' , ', '+@a+ ', ')> 0
如果有前台直接在前台生成not in ( 'aas ', 'dff ', 'ddd ')语句即可