就像查询检索所有行一样

时间:2013-06-01 09:10:59

标签: sql sql-like

我有以下查询应该使用LIKE在两个字段中搜索某些内容:

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

...但它不起作用:即使search中的字符串没有出现在任何行的ArticleTitleArticleContent中,仍然是所有行表被检索。我想知道如何解决它?

谢谢!

2 个答案:

答案 0 :(得分:4)

应该是......

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

...即,有两个独立的逻辑表达式。你现在正在做的是单独检查ArticleTitle字段中值的真实性(并且只有当它不是真实时,才会评估第二个表达式 - 使用LIKE)。显然,ArticleTitle在该表的所有行中都不为空。

作为旁注,我想知道如何在这里创建search值,并且不会产生查询。

答案 1 :(得分:2)

尝试:

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

而不是

ArticleTitle OR ArticleContent LIKE '%{0}%'

但我想它可能因db引擎而异。