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

MySQL:=sand vs er sand på BOOLEAN. Hvornår er det tilrådeligt at bruge hvilken? Og hvilken er leverandøruafhængig?

MySQL narrer dig faktisk. Den har slet ikke en boolesk kolonnetype :

Desuden er boolean-literals ikke sådanne :

I betragtning af at:

  • Mange databasesystemer har heller ikke booleaner (ikke i det mindste i standard SQL og kolonnetyper)
  • MySQL har ikke en nem måde at håndhæve 0 på eller 1 i BOOLEAN

Min konklusion ville være:

  • Du skal bruge WHERE IS flag eller bare WHERE flag fordi = virker simpelthen ikke korrekt. Hvilken, er muligvis et spørgsmål om præference.
  • Uanset hvad du vælger, vil ingen mulighed være leverandøruafhængig. Oracle vil f.eks. ikke engang køre nogen af ​​dem.

Rediger: hvis cross-platform er et must, ville jeg gå efter dette:

WHERE flag=0
WHERE flag<>0

Jeg er sikker på, at vi alle har gjort det mange gange.



  1. SQL-forespørgsel langsom i .NET-applikation, men øjeblikkelig i SQL Server Management Studio

  2. Hvordan indstilles værdi til variabel ved hjælp af 'execute' i t-sql?

  3. Hvordan vælger jeg id med maks. datogruppe efter kategori i PostgreSQL?

  4. I Oracle AS virker alias ikke