是否有理由不在mysql中使用<=>(null safe equals operator)而不是=?

cel*_*ige 12 mysql null equals operators equals-operator

MySQL提供了一个很好的经营者<=>与作品的比较可能包含空如null <=> nullnull <=> 5等回馈直观的结果是许多编程语言.正常的equals运算符总是只返回null,这会吸引许多新的MySQL用户,例如我自己.

MySQL有两个而不仅仅是功能<=>吗?谁真的需要一个内置语言类型有效未定义的运算符?

alm*_*oll 10

谁真的需要一个内置语言类型有效未定义的运算符?

你问了一些现实世界的例子.这是一个虚假的.假设你有一个住宿青年计划或类似的,其中一个要求是孩子们只与同性别的人共用一个房间.您的数据库中有一个可以为空的M/F字段 - 可以为空,因为您的数据提要不完整(您仍在追逐某些数据).您的房间匹配代码绝对不能与t1.Gender <=> t2.Gender的学生匹配,因为它最终可能会匹配两个性别不明的孩子,他们可能是性别相反的.相反,你匹配它们相等的位置而不是空的.

这只是一个例子.我承认这些年来NULL=操作员的行为引起了很多混乱,但最终的错误可能在于过多的在线MySQL教程,这些教程没有提到如何NULL与运营商交互,也没有提到运营商的存在<=>.


Sim*_*erg 6

mySQL和编程语言中null之间的最大区别在于,在mySQL中,null意味着未知值,而在编程中它意味着未定义的值.

在mySQL中,null不等于null(unknown不等于unknown).在编程语言中,null确实等于null(undefined等于undefined).

  • 是的,但这是否有合理的原因?这会让现实世界的问题变得更容易吗? (3认同)