ホームページ >データベース >mysql チュートリアル >SQL の WHERE 句がパラメータを無視しているように見えるのはなぜですか?
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 サイトの他の関連記事を参照してください。