Heim >Datenbank >MySQL-Tutorial >Warum scheint meine SQL-WHERE-Klausel einen Parameter zu ignorieren?

Warum scheint meine SQL-WHERE-Klausel einen Parameter zu ignorieren?

Barbara Streisand
Barbara StreisandOriginal
2025-01-19 10:11:09443Durchsuche

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

Fehlerbehebung bei SQL-WHERE-Klauseln: Übersehene Adressierungsparameter

Dieser Artikel befasst sich mit einem häufigen SQL-Abfrageproblem, bei dem die WHERE-Klausel scheinbar einen angegebenen Parameter ignoriert. Betrachten Sie dieses Beispiel:

<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>

Diese Abfrage gibt unerwartet Zeilen zurück, in denen university nicht „2“ ist. Das Problem liegt in der Priorität der Operatoren und der Reihenfolge der Operationen.

Die Lösung besteht darin, die WHERE-Klausel mithilfe von Klammern umzustrukturieren, um die Bedingungen korrekt zu gruppieren:

<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>

Durch das Einschließen der MATCH- und LIKE-Bedingungen in Klammern stellen wir sicher, dass sowohl die Volltextsuche als auch die LIKE-Bedingungen nur auf Zeilen angewendet werden, in denen university = '2'. Der AND-Operator schränkt die Ergebnisse dann korrekt auf diejenigen ein, die alle angegebenen Kriterien erfüllen. Diese überarbeitete Struktur garantiert genaue Ergebnisse basierend auf der vorgesehenen Parameterfilterung.

Das obige ist der detaillierte Inhalt vonWarum scheint meine SQL-WHERE-Klausel einen Parameter zu ignorieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn