2009-04-20 119 views

回答

1

使用聚結!

COALESCE(filter, '%') 

編輯:這可能是錯誤的做法,但我想這是一個選項。

4

取決於你所說的「不提供」的意思。如果這意味着NULL,你可以隨時嘗試

(
    Table.Column LIKE @myParameter 
OR 
    @myParameter IS NULL 
) 

我也發現這有時工作更快。

ISNULL(Table.Column, @myParameter) = @myParameter 

另外,如果你動態地從代碼構建TSQL,只是ommit WHERE子句的一部分,如果你不具備的參數或「%」填充@myParameter。

0
SELECT 
lalala 
WHERE 1=1 
and (
    value like '%'[email protected]+'%' 
    or @search = '' 
) 

雖然我不知道這將如何執行?

+0

如果你有%兩側如果@search是「」反正那麼它會匹配一切。在這種情況下,如果您正在進行完全匹配,則只需要OR。 – 2009-04-20 21:44:46

0

個人而言,這是哪門子的情況下,我會建立在VB/C#代碼中的SQL語句,只是不如果我沒有它,則在最後連接LIKE子句。

我剛纔說的稍微發燒友的版本是有一個準備好的聲明的兩個版本,一種帶有一個不LIKE子句,並調用相應的一個,因爲你需要。