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

C'è un motivo per non usare <=> (operatore null safe equals) in mysql invece di =?

Hai chiesto alcuni esempi del mondo reale. Eccone uno spurio. Diciamo che hai un programma giovanile residenziale o simile, e uno dei requisiti è che i bambini condividano la stanza solo con qualcuno dello stesso sesso. Hai un campo M/F nullable nel tuo database - nullable perché il tuo feed di dati è incompleto (stai ancora inseguendo alcuni dei dati). Il tuo codice di corrispondenza della stanza non dovrebbe assolutamente corrispondere agli studenti in cui t1.Gender<=>t2 .Sesso, perché potrebbe finire per abbinare due bambini di sesso sconosciuto, che potrebbero essere di generi opposti. Invece, abbini dove sono uguali e non entrambi nulli.

Questo è solo un esempio. Ammetto che il comportamento di NULL e il = operatore hanno causato molta confusione nel corso degli anni, ma alla fine la colpa è probabilmente della pletora di tutorial MySQL online che non fanno menzione di come NULL interagisce con gli operatori, né dell'esistenza del <=> operatore.