Mysql
 sql >> Base de données >  >> RDS >> Mysql

Y a-t-il une raison de ne pas utiliser <=> (null safe equals operator) dans mysql au lieu de = ?

Vous avez demandé des exemples concrets. En voici un faux. Disons que vous avez un programme résidentiel pour les jeunes ou similaire, et l'une des exigences est que les enfants ne partagent une chambre qu'avec une personne du même sexe. Vous avez un champ M/F nullable dans votre base de données - nullable parce que votre flux de données est incomplet (vous recherchez toujours certaines des données). Votre code de correspondance de chambre ne doit certainement pas correspondre aux étudiants où t1.Gender<=>t2 .Gender, car cela pourrait finir par correspondre à deux enfants de sexe inconnu, qui pourraient être de sexes opposés. Au lieu de cela, vous faites correspondre où ils sont égaux et non nuls tous les deux.

Ce n'est qu'un exemple. J'admets que le comportement de NULL et le = ont causé beaucoup de confusion au fil des ans, mais en fin de compte, la faute en revient probablement à la pléthore de tutoriels MySQL en ligne qui ne font aucune mention de la façon dont NULL interagit avec les opérateurs, ni de l'existence du <=> opérateur.