Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 是否有理由不使用<=&燃气轮机;(空安全等于运算符)而不是=?_Mysql_Null_Operators_Equals_Equals Operator - Fatal编程技术网

Mysql 是否有理由不使用<=&燃气轮机;(空安全等于运算符)而不是=?

Mysql 是否有理由不使用<=&燃气轮机;(空安全等于运算符)而不是=?,mysql,null,operators,equals,equals-operator,Mysql,Null,Operators,Equals,Equals Operator,MySQL提供了一个很好的操作符,它可以处理可能包含空值的比较,例如null-null或null-5等。与许多编程语言一样,它可以返回直观的结果。而普通的equals操作符总是返回null,这会捕获很多新的MySQL用户,比如我自己 MySQL在中既有功能又有功能,这是有原因的吗?谁真的需要使用内置语言类型有效地未定义的运算符?在mySQL和编程语言中,null的最大区别在于,在mySQL中,null表示未知的值,而在编程中它表示未定义的值 在mySQL中,null不等于null(unknown

MySQL提供了一个很好的操作符
,它可以处理可能包含空值的比较,例如
null-null
null-5
等。与许多编程语言一样,它可以返回直观的结果。而普通的equals操作符总是返回null,这会捕获很多新的MySQL用户,比如我自己


MySQL在
中既有功能又有功能,这是有原因的吗?谁真的需要使用内置语言类型有效地未定义的运算符?

在mySQL和编程语言中,null的最大区别在于,在mySQL中,null表示未知的值,而在编程中它表示未定义的

在mySQL中,null不等于null(unknown不等于unknown)。而在编程语言中,null并不等于null(未定义等于未定义)

MySql同时拥有这两种功能,而不仅仅是其中的功能,这有什么原因吗 ? 操作人员完全不同

执行与
=
运算符类似的相等比较,但如果两个操作数都是
NULL
,则返回
1
而不是
NULL
,如果一个操作数是
NULL
,则返回
0
而不是
NULL

谁真的需要一个未定义的运算符 语言类型

这取决于案例,仅仅因为你没有遇到过这样的案例,并不意味着没有人需要它

谁真的需要一个实际上未定义内置语言类型的运算符

你问了一些真实世界的例子。这是一个假的。 假设你有一个青少年寄宿项目或类似项目,其中一个要求是孩子们只能和同性同住一个房间。您的数据库中有一个可为空的M/F字段-可为空,因为您的数据提要不完整(您仍在查找某些数据)。 您的房间匹配代码绝对不应该匹配t1.Gendert2.Gender所在的学生,因为它可能会匹配两个未知性别的孩子,他们可能是异性。相反,您匹配它们相等的位置,而不是两者都为空

这只是一个例子。我承认多年来,
NULL
=
操作符的行为造成了很多混乱,但归根结底,错误可能在于太多的在线MySQL教程没有提到
NULL
如何与操作符交互,也没有提到
操作符的存在

谁真的需要一个未定义的运算符 语言类型

数据库中的关系也需要它。特别是在使用外键约束时

例如,如果您有一个任务表(在您的公司中)。然后将这些任务分配给员工。因此,您的任务表与员工表之间存在关系。
而且总会有一些未分配的任务。在这种情况下,任务表中用于与employees表的关系的字段将包含
NULL
。 这将确保此任务未分配。这意味着:不可能存在与employees表的关系

如果
NULL=NULL
true
,那么在我的示例中,employees表中的外键也可能为
NULL
。因此,任务将分配给一个或一些员工。而且你永远无法确定任务是否分配给某个员工。

是的

这一定是因为关系数据库使用的理论是(
TRUE
NULL
FALSE

三值逻辑必须如此,因为它必须是内部一致的

它遵循数学规则


有人能想到任何案例吗?因为我无法回想在十多年的专业发展中,我在哪里可以使用class='s behavior'而不是's。如果class='s提供了不同的行为,我可以看到它的用法,但是它在与NULL一起使用时不提供行为,因为只要表达式中有NULL,结果总是NULL。@cellige它提供NO(合理、有用)与空文本一起使用时的行为。但是,当比较两个非文字表达式和可空表达式时,它肯定会做一些有人可能合理希望它做的事情。是的,但这有逻辑原因吗?这会使什么现实问题变得更容易?很好的例子。解释并可能详细说明<当字段具有有限数量的可能值时,code>null表达式可能很有用,但是允许在应用程序执行的晚些时候才定义字段?我想更进一步-我也不明白为什么它们只对有限数量的值有用(很明显,所有SQL字段的值都是有限的,但我假设您指的是一个小的有限数!)空值在各种数据值未知的情况下都能很好地工作(无论以后是否会知道)。这是我认为最好的答案。我认为这不是一个有效的示例;要实现这一点,主键需要NULL。(当fk为NULL时,这只是一侧)