如果在join t-sql中

时间:2012-07-03 16:20:33

标签: sql tsql

我对这个部分有一个很大的t-sql存储过程,我很担心:

insert into @list
(
params
...
) 
select params
,..
,oip.someAttr
from @list2 as O
join dbo.abc oip
on oip.id = O.id
AND oip.prgId <> 4
join .. someother tables
...
where oipr.attrA = 1232

现在我想编写一个想要在存储过程中添加其他参数的逻辑 “@value bit”如果设置则只检查“AND条件”,否则不应该检查。

所以,如果我喜欢

join dbo.abc oip
on oip.id = O.id
[AND]??? (i donot know).

提前致谢:)

2 个答案:

答案 0 :(得分:5)

这应该这样做: AND (oip.prgId <> 4 OR @value = 0)

答案 1 :(得分:0)

假设oip.prgId不能保留0,这是考虑/尝试的另一种选择:

AND oip.prgId <> 4 * @value

如果@value为1,则不等式的右侧部分将计算为4,因此相应的行将被过滤掉。但是,如果@value0,则表达式将等同于oip.prgId <> 0,这实际上意味着 oip.prgId 的任何值(因为我们'我们假设列中不能有0个值。