sql >> Base de Datos >  >> RDS >> Mysql

¿Hay alguna razón para no usar <=> (operador igual a seguro nulo) en mysql en lugar de =?

Usted pidió algunos ejemplos del mundo real. Aquí hay uno espurio. Supongamos que tienes un programa residencial para jóvenes o similar, y uno de los requisitos es que los niños solo compartan habitación con alguien del mismo sexo. Tiene un campo M/F anulable en su base de datos - anulable porque su fuente de datos está incompleta (todavía está buscando algunos de los datos). Su código de coincidencia de habitación definitivamente no debe coincidir con los estudiantes donde t1.Gender<=>t2 .Género, porque podría terminar emparejando a dos niños de género desconocido, que podrían ser de géneros opuestos. En cambio, haces coincidir donde son iguales y no ambos nulos.

Ese es solo un ejemplo. Admito que el comportamiento de NULL y el = han causado mucha confusión a lo largo de los años, pero en última instancia, la falla probablemente radica en la gran cantidad de tutoriales en línea de MySQL que no mencionan cómo NULL interactúa con operadores, ni de la existencia del <=> operador.