Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Existe uma razão para não usar <=> (null safe equals operator) no mysql em vez de =?


Você pediu alguns exemplos do mundo real. Aqui está uma espúria. Digamos que você tenha um programa residencial para jovens ou similar, e um dos requisitos é que as crianças só compartilhem o quarto com alguém do mesmo sexo. Você tem um campo M/F anulável em seu banco de dados - anulável porque seu feed de dados está incompleto (você ainda está procurando alguns dados). Seu código de correspondência de sala definitivamente não deve corresponder aos alunos em que t1.Gender<=>t2 .Gender, porque pode acabar combinando duas crianças de gênero desconhecido, que podem ser de gêneros opostos. Em vez disso, você corresponde onde eles são iguais e não ambos nulos.

Isso é apenas um exemplo. Admito que o comportamento de NULL e o = tem causado muita confusão ao longo dos anos, mas no final das contas a falha provavelmente está na infinidade de tutoriais online do MySQL que não mencionam como NULL interage com operadores, nem da existência do <=> operador.