这个问题不在我正在查看的数据库考试中,所以它可能无法在真实情况下使用......
以下有效的 SQL 语句会产生什么输出?解释你的答案!
选择(空=空);
我可以很容易地产生语句的输出,即
学校=>选择(空=空); ?柱子? ---------- (1 行)
在 psql 8.4.11 中,但是如何以及为什么这是我不知道的答案...我猜它会尝试评估括号内的表达式并得出真/假,但显然不是。
关于它为什么表现得如此的任何提示?
谢谢
这个问题不在我正在查看的数据库考试中,所以它可能无法在真实情况下使用......
以下有效的 SQL 语句会产生什么输出?解释你的答案!
选择(空=空);
我可以很容易地产生语句的输出,即
学校=>选择(空=空); ?柱子? ---------- (1 行)
在 psql 8.4.11 中,但是如何以及为什么这是我不知道的答案...我猜它会尝试评估括号内的表达式并得出真/假,但显然不是。
关于它为什么表现得如此的任何提示?
谢谢
NULL
代表“未知值”。不知道一个值是真还是假或其他任何东西。
那么,当比较两个未知值时,答案会是什么?UnknownA 是否等于 UnknownB?
回答?未知...
以下是 SQL Server 的示例:
IF (NULL = NULL)
PRINT 'Equals'
IF (NULL != NULL)
PRINT 'Not Equals'
IF (NULL IS NULL)
PRINT 'IS'
IF (NULL IS NOT NULL)
PRINT 'IS NOT'
唯一被打印的东西:IS
我想,预期的答案是NULL
。这就是 MySQL 所做的。实际上,这也是 PostgreSQL 返回的内容。可能,您的 SQL 客户端只是没有显示唯一返回值为 a 的单行NULL
。
但是,MS SQL 服务器没有布尔类型,因此它不能只选择布尔表达式的结果。所以 MS SQL 中的结果是错误的。
问题的重点是检查您对 SQL 中的 NULL 逻辑的理解。而不是=
,您应该IS
在比较时使用运算符NULL
(除非该ANSI_NULLS
选项在 MySQL 中设置为 true)。