2013-10-21 23 views
-1

在一個存儲過程,讓我們說我有一個標誌,它可以是或在哪裏,如果子句中的SQL查詢

如果,那麼我想select * from table A where name = 'blah'
如果,那麼我想要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情況下是非常低效的。

謝謝。

回答

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

您也可以使用Case statement;

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

好的一個!!!!!但是在OR的情況下,OR會是更好的選擇! :) –

+0

當將一個值與幾個不同列之一(取決於一個標誌)進行比較時,此解決方案可以很好地工作。雖然,我會在這個特定情況下使用'OR'選項(更簡單)。 – JDB

+0

我同意你和你的發帖,因爲它有點不同。 – Kaf