sql >> Databasteknik >  >> RDS >> Mysql

MySQL:=sant vs är sant på BOOLEAN. När är det lämpligt att använda vilken? Och vilken är leverantörsoberoende?

MySQL lurar dig faktiskt. Den har inte alls en boolesk kolumntyp :

Dessutom är de booleska bokstaverna inte sådana :

Med tanke på att:

  • Många databassystem har inte heller booleaner (inte åtminstone i standard SQL- och kolumntyper)
  • MySQL har inte ett enkelt sätt att genomdriva 0 eller 1 i BOOLEAN

Min slutsats skulle vara:

  • Du måste använda WHERE IS flag eller bara WHERE flag eftersom = fungerar helt enkelt inte korrekt. Vilken är möjligen en fråga om preferens.
  • Vad du än väljer kommer inget alternativ att vara leverantörsoberoende. Oracle kommer till exempel inte ens att köra någon av dem.

Redigera: om plattformsoberoende är ett måste, skulle jag satsa på det här:

WHERE flag=0
WHERE flag<>0

Jag är säker på att vi alla har gjort det många gånger.



  1. Hibernate Fel vid exekvering av DDL via JDBC Statement

  2. N+1-redundans och serverkonsolidering

  3. cd:-M:ogiltigt alternativ

  4. Så här återställer du identitetskolumnvärde i SQL Server-tabell - SQL Server / T-SQL självstudie del 43