MySQL täuscht Sie tatsächlich. Es hat überhaupt keinen booleschen Spaltentyp :
Auch die booleschen Literale sind keine solchen :
In Anbetracht dessen:
- Viele Datenbanksysteme haben auch keine booleschen Werte (zumindest nicht in Standard-SQL und Spaltentypen)
- MySQL hat keinen einfachen Weg, um
0
zu erzwingen oder1
inBOOLEAN
Mein Fazit wäre:
- Sie müssen
WHERE IS flag
verwenden oder einfachWHERE flag
weil=
funktioniert einfach nicht richtig. Welche, ist möglicherweise Geschmackssache. - Wie auch immer Sie sich entscheiden, keine Option ist herstellerunabhängig. Zum Beispiel führt Oracle keines von beiden aus.
Bearbeiten: Wenn Cross-Plattform ein Muss ist, würde ich mich für Folgendes entscheiden:
WHERE flag=0
WHERE flag<>0
Ich bin mir sicher, dass wir das alle schon oft gemacht haben.