MySQL提供了一个很好的运营商<=>
与可能包含空如工作比较null <=> null
或null <=> 5
等回馈直观的结果是许多编程语言。 而正常等号操作始终只是返回null,这歪捕获了许多新的MySQL用户如自己。
是否有一个原因MySQL有两个,而不仅仅是功能性<=>
? 谁真正需要的是有效未定义内置了语言类型的运营商?
MySQL提供了一个很好的运营商<=>
与可能包含空如工作比较null <=> null
或null <=> 5
等回馈直观的结果是许多编程语言。 而正常等号操作始终只是返回null,这歪捕获了许多新的MySQL用户如自己。
是否有一个原因MySQL有两个,而不仅仅是功能性<=>
? 谁真正需要的是有效未定义内置了语言类型的运营商?
谁真正需要的是有效未定义内置了语言类型的运营商?
你问一些真实世界的例子。 这里是一个虚假的。 比方说,你有一个住宅青年计划,还是相似的要求之一是,孩子们只共享与同性别的人的房间。 你在你的数据库中有一个为空的M / F字段 - 空,因为您的数据是不完整的(你还在追逐一些数据)。 你的房间匹配代码绝对不应该在那里t1.Gender <=> t2.Gender匹配的学生,因为它最终可能会匹配未知性别的两个孩子,谁可能是相反的性别。 相反,你匹配,他们是平等的,不能同时为空。
这只是一个例子。 我承认的行为NULL
和=
运营商都造成了很多混乱,多年来,但最终故障可能在于网上MySQL的教程,没有提及如何多如牛毛NULL
与运营商的互动,也没有存在的该<=>
操作。
MySQL的数据和编程语言之间空的最大的区别是在MySQL中,null表示未知值,而在编程就意味着未定义的值。
在MySQL中,空不等于空(未知不等于未知)。 而在编程语言,空不等于空(未定义等于未定义)。
谁真正需要的是有效未定义内置了语言类型的运营商?
你还需要为你的数据库中的关系。 特别是如果你正在使用外键约束。
例如,如果你有一个任务表(公司)。 那么您分配这些任务给员工。 所以你必须从你的任务表的关系到你的员工表。
和总是会有一些未分配的任务。 在这种情况下,您的任务表,你使用的关系,给员工表中的字段将包含NULL
。 这将确保,这个任务分配。 这意味着:有没有可能存在于员工表的关系。
如果NULL = NULL
是true
,那么在我的例子会有总是在员工表的外键也可能NULL
。 因此,任务将被分配给一个或几个员工。 你wheter任务被分配给某些员工或不是永远就能够知道。
是否有一个原因MySQL有两个,而不仅仅是功能性<=>? 运营商彼此完全不同。
<=>
执行像的相等比较=
操作者,但返回1
,而不是NULL
如果两个操作数都NULL
,和0
而不是NULL
如果一个操作数是NULL
。
谁真正需要的是有效未定义内置了语言类型的运营商?
这要看情况下,仅仅是因为你还没有遇到过这样的情况,并不意味着没有人需要它。
是。
这一定是因为关系数据库使用的理论的三值逻辑 ( TRUE
, NULL
, FALSE
)。
而三值逻辑必须工作是因为它必须是内在一致的。
它遵循从数学法则。
用NULL比较和三值逻辑