2011-12-31 241 views
2

我將開發基於C#表單的桌面應用程序,其中我正在開發一個搜索模塊。搜索標準是如果該字段爲空,則保留該字段,如果填充了兩個或兩個以上的字段,則搜索結果將通過AND顯示所有字段。我無法對此進行查詢。請幫我 問候多個字段的搜索

+0

我使用SQL Server和查詢ID = 「」 給出錯誤所以一個解決方案是我必須編寫多個查詢,並在if n else的基礎上決定執行哪個查詢。 – Snake 2011-12-31 11:52:57

回答

5

這裏一個典型的做法是:

var query = new StringBuilder(); 
query.Append("select ... From ... Where 1=1"); 
if(fooHasValue) { 
    query.Append(" and Foo = @foo"); 
    cmd.Parameters.AddWithValue("foo", foo); 
} 
if(barHasValue) { 
    query.Append(" and Bar = @bar"); 
    cmd.Parameters.AddWithValue("bar", bar); 
} 
cmd.CommandText = query.ToString(); 

或類似的東西。

我使用LINQ;

IQueryable<Whatever> query = ctx.TheTable; 
if(fooHasValue) 
    query = query.Where(x => x.Foo == foo); 
if(barHasValue) 
    query = query.Where(x => x.Bar == bar); 
foreach(var row in query) {...} 
0

嘗試這樣的事情,才能算的非空列(C1 ... C4):

SELECT * 
FROM tbl 
WHERE 
    (CASE WHEN c1 IS NULL THEN 0 ELSE 1 END + 
    CASE WHEN c2 IS NULL THEN 0 ELSE 1 END + 
    CASE WHEN c3 IS NULL THEN 0 ELSE 1 END + 
    CASE WHEN c4 IS NULL THEN 0 ELSE 1 END) >= 2