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

MySQL:=true vs ist auf BOOLEAN wahr. Wann ist es ratsam, welches zu verwenden? Und welches ist herstellerunabhängig?

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 oder 1 in BOOLEAN

Mein Fazit wäre:

  • Sie müssen WHERE IS flag verwenden oder einfach WHERE 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.