2010-09-14 46 views
0

我有SP,從表中有兩列這樣SQL和空選擇值

@param1 text, 
@param2 text 
Select * from tablle1 where field1 like @param1 and field2 like @param2 

但是選擇數據,因爲有時Filed2爲空我不得不這樣做,否則查詢返回任何

@param1 text, 
@param2 text 
Select * from tablle1 where field1 like @param1 and (field2 like @param2 OR field2 IS NULL) 

我的問題是,如果我現在嘗試運行與@param2@param1值和「%」我從表中的所有行的SP

我怎樣才能在任何情況下做到這一點? 我打算在asp.net網站的搜索表單中使用這個SP,併爲用戶提供在搜索中使用'%'的選項(最終會有更多的字段可供搜索,並且每個字段都會有一個文本框默認爲「%」)

+0

爲什麼哦爲什麼你做一個關鍵碼可爲空? – sheeks06 2010-09-14 09:44:16

+0

我沒有說任何地方,它是一個關鍵 – Iulian 2010-09-14 09:47:10

回答

2

試試這個

@param1 text, 
@param2 text 
Select * from tablle1 where field1 like @param1 and isnull(field2,@param2) like @param2 
or 
Select * from tablle1 where field1 like @param1 and isnull(field2,'') like @param2 
+0

我用這種方法的問題是,filed2是數字,而@param2是文本(允許傳遞'%')。我得到的文本與數字錯誤不兼容。 – Iulian 2010-09-14 09:52:58

+0

@ Iulian-首先使用Cast或Convert函數將字段轉換爲varchar – 2010-09-14 09:57:22

+0

我已將其更改爲'select * from tablle1 where field1 like @ param1 and isnull(field2,0)like @ param2' and it's working,from我的理解是,如果filed2是空的,它會使'0 = @ param2'成爲第二個條件? – Iulian 2010-09-14 10:18:27

0

你應該Sommarskogs homepage

看看它的頁面是關於這個問題的最佳參考,同時也將解決一些使用此代碼可能會遇到的其他問題。