ホームページ >データベース >mysql チュートリアル >SQL の WHERE 句がパラメータを無視しているように見えるのはなぜですか?

SQL の WHERE 句がパラメータを無視しているように見えるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-19 10:11:09493ブラウズ

Why Does My SQL WHERE Clause Seem to Ignore a Parameter?

SQL WHERE 句のトラブルシューティング: パラメーターの見落としの指定

この記事では、WHERE 句が指定されたパラメーターを無視しているように見える一般的な SQL クエリの問題に対処します。 次の例を考えてみましょう:

<code class="language-sql">SELECT * FROM people 
WHERE
university='2' 
AND MATCH (lname,fname) AGAINST ('+massive' IN BOOLEAN MODE) 
OR (fname LIKE '%box%' OR lname LIKE '%box%') </code>

このクエリは、予期せず、university が '2' ではない行を返します。問題は、演算子の優先順位と演算の順序にあります。

この解決策には、括弧を使用して WHERE 句を再構築し、条件を正しくグループ化することが含まれます。

<code class="language-sql">SELECT * FROM people 
WHERE
    university='2' 
    AND (MATCH (lname,fname) AGAINST ('+massive' IN BOOLEAN MODE) 
         OR fname LIKE '%box%' 
         OR lname LIKE '%box%')</code>

MATCH 条件と LIKE 条件を括弧で囲むことにより、全文検索と LIKE 条件の両方が の行にのみuniversity = '2' 適用されるようになります。 AND 演算子は、指定された基準をすべて満たすものに結果を正しく制限します。 この改訂された構造により、意図したパラメータ フィルタリングに基づいた正確な結果が保証されます。

以上がSQL の WHERE 句がパラメータを無視しているように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。