Überwiegen boolescher Operatoren in MySQL
Abfragen nutzen häufig logische Operatoren wie OR und AND, um bestimmte Daten zu filtern und abzurufen. Das Verständnis der Rangfolge dieser Operatoren ist entscheidend, um sicherzustellen, dass Abfragen wie beabsichtigt ausgeführt werden.
In MySQL bestimmt die Operatorrangfolge die Reihenfolge, in der Vorgänge ausgewertet werden. Die MySQL-Dokumentation bietet eine umfassende Liste von Operator-Prioritätsstufen, wobei die Operatoren ganz oben in der Liste eine höhere Priorität haben.
Betrachten Sie die folgende Abfrage:
SELECT * FROM tablename WHERE display = 1 OR display = 2 AND content LIKE "%hello world%" OR tags LIKE "%hello world%" OR title LIKE "%hello world%";
Der Dokumentation zufolge sind die OR- und AND-Operatoren haben die gleiche Priorität. Daher kann diese Abfrage auf zwei Arten interpretiert werden:
Klammern zuerst:
((display = 1) OR (display = 2)) AND ((content LIKE "%hello world%") OR (tags LIKE "%hello world%") OR (title LIKE "%hello world%"))
Von links nach rechts Auswertung:
(display = 1 OR display = 2) AND (content LIKE "%hello world%") OR (tags LIKE "%hello world%" OR title LIKE "%hello world%")
Um Mehrdeutigkeiten zu vermeiden, empfiehlt es sich, Klammern zum Gruppieren von Ausdrücken zu verwenden und die Operatorpriorität explizit zu definieren. Zum Beispiel:
SELECT * FROM tablename WHERE (display = 1 OR display = 2) AND (content LIKE "%hello world%" OR tags LIKE "%hello world%" OR title LIKE "%hello world%");
Das obige ist der detaillierte Inhalt vonWie wirkt sich die Operatorpriorität auf MySQL-Abfrageergebnisse mit AND und OR aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!