0

LIKE を使用して 2 つのフィールドでコンテンツを検索する次のクエリがあります。

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

...しかし、機能しません。文字列がどの行にもsearch表示されなくArticleTitleArticleContentも、テーブルのすべての行が取得されます。どうすれば修正できますか?

ありがとう!

4

2 に答える 2

4

そのはず...

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

... つまり、2 つの別個の論理式を使用します。ここで行っているのは、フィールドの値の真偽のみをチェックすることですArticleTitle(真でない場合にのみ、LIKE を使用した 2 番目の式が評価されます)。どうやら、ArticleTitleそのテーブルのすべての行で空ではありません。

補足として、ここで価値がどのようにsearch作成されるのか、結果のクエリがインジェクションされやすいのではないかと思います。

于 2013-06-01T09:12:00.493 に答える
2

試す:

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

それ以外の

ArticleTitle OR ArticleContent LIKE '%{0}%'

しかし、dbエンジンによって異なる可能性があると思います

于 2013-06-01T09:12:35.320 に答える