sql >> Database >  >> RDS >> Mysql

Is er een reden om <=> (null safe is gelijk aan operator) niet te gebruiken in mysql in plaats van =?

U vroeg om enkele praktijkvoorbeelden. Hier is een valse. Laten we zeggen dat je een residentieel jeugdprogramma of iets dergelijks hebt, en een van de vereisten is dat de kinderen alleen een kamer delen met iemand van hetzelfde geslacht. Je hebt een nullable M/V-veld in je database - nullable omdat je datafeed onvolledig is (je jaagt nog steeds op een aantal gegevens). Je kamerovereenkomstcode mag zeker niet overeenkomen met studenten waar t1.Gender<=>t2 .Geslacht, omdat het zou kunnen matchen met twee kinderen van onbekend geslacht, die mogelijk van tegenovergestelde geslachten zijn. In plaats daarvan match je waar ze gelijk zijn en niet allebei nul.

Dat is maar één voorbeeld. Ik geef toe dat het gedrag van NULL en de = operator hebben in de loop der jaren voor veel verwarring gezorgd, maar uiteindelijk ligt de fout waarschijnlijk bij de overvloed aan online MySQL-tutorials die niet vermelden hoe NULL interageert met operators, noch van het bestaan ​​van de <=> telefoniste.



  1. Wat is het Database and Relational Database Management System (RDBMS)

  2. Homebrew MySQL 8.0.18 op macOS 10.15 Catalina werkt niet als service

  3. Moet ik NOT IN, OUTER APPLY, LEFT OUTER JOIN, EXCEPT of NOT EXISTS gebruiken?

  4. Oracle SQL retourneert rijen op willekeurige wijze wanneer er geen order by-clausule wordt gebruikt