2011-02-27 77 views
0

這裏只是一個簡單的問題。SQL位字段過濾

可以說我有一個從表中選擇記錄的存儲過程。

select * from tbl_table 
where deleted = @deleted 

因此,對於上面的這個,我必須傳遞一個參數是TRUE或FALSE。

是否有可能返回刪除等於TRUE和FALSE的結果,但保留傳遞參數的選項。所以我想,如果沒有參數傳入,沒有過濾器。

我想其他的辦法是做..

select * from tbl_table 
where deleted = @deleted1 
and deleted = @deleted2 

所以,你有2個參數相同的過濾器。通過這種方式,你可以做到真或假,或者將兩個過濾器設置爲相同的 - 給予更多的迴旋餘地。

如果任何人有任何想法或想法,這將是偉大的!

回答

2

設置您的參數可以爲空(= NULL),然後

select * from tbl_table 
where (@deleted IS NULL) OR (deleted = @deleted) 

然後不提供的參數(或明確地提供爲NULL),當你不想通過參數過濾器被應用。

(但要注意有時可有嗅參數的後果,尤其是大量的參數)

+0

這是個好主意。問題是我在C#中使用這些存儲過程,所以這些方法需要接受一個布爾值。我不認爲你可以給C#布爾值一個null。 – tmutton 2011-02-27 11:06:24

+0

codemonkey:可空布爾值.... – 2011-02-27 11:07:37

+0

望着它! – tmutton 2011-02-27 11:32:16