Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mysql wo 1=0 Verwirrung

Dies hängt von der Art der booleschen Operationen ab, an denen Sie arbeiten. Wenn Sie eine variable Anzahl von AND hinzufügen möchten -Anweisungen, dann verwenden Sie eine Anweisung, die immer als wahr ausgewertet wird, wie z. B. 1 = 1 . Auf der anderen Seite, wenn Sie dasselbe mit OR tun möchten Anweisungen, dann sollten Sie eine Anweisung verwenden, die als falsch ausgewertet wird, wie z. B. 1 = 0 .

Angenommen, Sie haben eine boolesche Variable x mit einem unbestimmten Wahrheitswert (es könnte wahr oder falsch sein. Sie wissen es nicht.) Nun, wenn Sie den Wert von x AND false finden , erhalten Sie false , unabhängig vom Wert von x ist.

Andererseits, wenn Sie sich x OR true ansehen , erhalten Sie true . Auch dies ist unabhängig vom Wahrheitswert von x .

In Ihrer Anweisung möchten Sie, dass der hartcodierte Wert keine Auswirkung auf die Logik der Abfrage hat. Da false OR a OR b OR c ist logisch äquivalent zu a OR b OR c , hat die hartcodierte Anweisung keine Auswirkung. Im anderen Fall true AND a AND b AND c entspricht a AND b AND c .