我已經研究了這個場景幾個小時,但似乎無法找到任何直接解決它的問題。SQL Server 2005 - WHERE子句 - 使用IF或CASE還是BOOLEAN?
我有很多可選參數傳遞到存儲過程。我想返回一個沒有過濾的記錄集,一個或多個傳入存儲過程的可選參數。
我正試圖產生一個單一的查詢來做到這一點。
這裏是我的僞碼(SQL Server 2005中):
declare @a varchar(10); set @a = null;
declare @b varchar(10); set @b = 'comm%';
select * from x
where (if @a is not null then col1 like @a)
and (if @b is not null then col2 like @b)
正如你可以看到我只想在col1 過濾如果我的參數(@a)的數據。同樣我只想過濾col2 if我的參數(@b)有數據。如果@a和@b都是NULL,那麼查詢應該返回所有行。
我發現幾個線程接近我想要的,但沒有一個地址使用LIKE子句。
這解決了我的問題。非常感謝:) – Mark 2010-11-02 01:49:15
@Mark。樂意效勞! – 2010-11-02 01:50:53