-1

在存储过程中,假设我有一个flag,可以是01

如果1,那么我想select * from table A where name = 'blah'
如果0,那么我会想要select * from table A where name = blah and age = 13

有没有办法可以添加and age = 13到存储过程查询?

这就是我目前所拥有的。

IF @flag = 1
  SELECT * from A where name = 'blah'

ELSE 
  SELECT * from A where name = 'blah' and age = 13

我想知道查询变得非常长的情况,因此复制和粘贴更多的ELSE情况是非常低效的。

谢谢。

4

2 回答 2

3
SELECT * from A 
where name = 'blah' 
and (@flag = 1 or age = 13)
于 2013-10-21T19:17:39.233 回答
1

您也可以使用Case statement;

Select * from A
Where Name = 'blah' And Age = Case @flag when 1 then Age else 13 end
于 2013-10-21T19:22:25.910 回答