Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:=true vs è true su BOOLEAN. Quando è consigliabile utilizzare quale? E quale è indipendente dal fornitore?

MySQL ti sta effettivamente prendendo in giro. non ha affatto un tipo di colonna booleana :

Inoltre, i letterali booleani non sono tali :

Considerando che:

  • Neanche molti sistemi di database hanno booleani (non almeno in SQL standard e tipi di colonne)
  • MySQL non ha un modo semplice per imporre 0 o 1 in BOOLEAN

La mia conclusione sarebbe:

  • Dovrai usare WHERE IS flag o semplicemente WHERE flag perché = semplicemente non funziona correttamente. Quale, forse è una questione di preferenza.
  • Qualunque cosa tu scelga, nessuna opzione sarà indipendente dal fornitore. Ad esempio, Oracle non eseguirà nemmeno nessuno dei due.

Modifica: se il multipiattaforma è un must, sceglierei questo:

WHERE flag=0
WHERE flag<>0

Sono sicuro che l'abbiamo fatto tutti un sacco di volte.