首頁 >資料庫 >mysql教程 >為什麼我的 SQL WHERE 子句似乎忽略了某個參數?

為什麼我的 SQL WHERE 子句似乎忽略了某個參數?

Barbara Streisand
Barbara Streisand原創
2025-01-19 10:11:09443瀏覽

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

SQL WHERE 子句故障排除:解決參數忽略問題

本文解決了一個常見的 SQL 查詢問題,其中 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>

此查詢意外地傳回 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>

透過將 MATCHLIKE 條件括在括號內,我們確保全文搜尋和 LIKE 條件都應用於包含 university = '2' 的行。 然後,AND 運算子正確地將結果限制為滿足所有指定條件的結果。 這種修改後的結構保證了基於預期參數過濾的準確結果。

以上是為什麼我的 SQL WHERE 子句似乎忽略了某個參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn