sql >> Databasteknik >  >> RDS >> Mysql

Finns det en anledning att inte använda <=> (null safe equals operator) i mysql istället för =?

Du bad om några verkliga exempel. Här är en falsk sådan. Låt oss säga att du har ett ungdomsprogram eller liknande, och ett av kraven är att barnen bara delar rum med någon av samma kön. Du har ett nullbart M/F-fält i din databas - nullbart eftersom ditt dataflöde är ofullständigt (du jagar fortfarande en del av datan). Din rumsmatchningskod bör definitivt inte matcha elever där t1.Gender<=>t2 .Kön, eftersom det kan sluta matcha två barn av okänt kön, som kan vara av motsatt kön. Istället matchar du där de är lika och inte båda null.

Det är bara ett exempel. Jag erkänner att beteendet hos NULL och = operatören har orsakat mycket förvirring under åren, men i slutändan ligger felet förmodligen i mängden av online MySQL-handledningar som inte nämner hur NULL interagerar med operatörer, inte heller om existensen av <=> operatör.



  1. MySQL kombinera två kolumner och lägg till en ny kolumn

  2. En första titt på den nya SQL Server Cardinality Estimator

  3. Hur ställer man in tabellnamn i dynamisk SQL-fråga?

  4. För många öppna filer fel på Ubuntu 8.04