0

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

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

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

谢谢!

4

2 回答 2

4

它应该是...

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

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

作为旁注,我想知道这里的search价值是如何创造的,并且生成的查询不会容易被注入。

于 2013-06-01T09:12:00.493 回答
2

尝试:

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

代替

ArticleTitle OR ArticleContent LIKE '%{0}%'

但我想它可能会因数据库引擎而异

于 2013-06-01T09:12:35.320 回答