SQL查询中的where和if子句

时间:2013-10-21 19:15:43

标签: sql stored-procedures

在存储过程中,假设我有一个标记,可以是 0 1

如果 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案例的更多内容非常低效。

感谢。

2 个答案:

答案 0 :(得分:3)

SELECT * from A 
where name = 'blah' 
and (@flag = 1 or age = 13)

答案 1 :(得分:1)

您还可以使用Case statement;

Select * from A
Where Name = 'blah' And Age = Case @flag when 1 then Age else 13 end