2013-06-01 55 views
0

我有一個應該使用這樣的兩個字段搜索某些內容下面的查詢:像查詢檢索所有的行

string LikeQuery = string.Format(
    "SELECT * FROM tblArticles WHERE ArticleTitle OR ArticleContent LIKE '%{0}%'", 
    search); 

...但它不工作:即使在search字符串沒有出現在任何行的ArticleTitleArticleContent中,仍然檢索到表中的所有行。我想知道我該如何解決它?

謝謝!

回答

4

它應該是...

SELECT * 
    FROM tblArticles 
WHERE ArticleTitle LIKE '%{0}%' 
    OR ArticleContent LIKE '%{0}%' 

...即,兩個獨立的邏輯表達式。你現在正在做的是僅僅檢查ArticleTitle字段中的值的真實性(並且只有當它不是真的,第二個表達式 - 用LIKE - )才被評估。顯然,ArticleTitle在該表的所有行中都不是空的。

作爲一個旁註,我想知道search值是如何在這裏創建的,並且不會導致查詢容易發生注入。

+0

現在我明白了,非常感謝你! –

2

嘗試:的

ArticleTitle LIKE '%{0}%' OR ArticleContent LIKE '%{0}%' 

代替

ArticleTitle OR ArticleContent LIKE '%{0}%' 

但我想它可以在數據庫引擎有所不同