MySql 比较时返回 NULL

MySql returning NULL on comparison

我 运行 遇到了一个问题。

谁能解释一下原因

SELECT (null <> 'TEST STRING')

SELECT (null != 'TEST STRING')

returns NULL 而不是您期望的布尔值 true?

我不是在寻找解决方案,而是在寻找 SQL 为什么会这样的解释。

无论使用何种语言,您都希望与 return 布尔值进行任何比较。

您不能使用 =、< 或 <> 等算术比较运算符来测试 NULL。 https://dev.mysql.com/doc/refman/5.0/en/working-with-null.html

Because the result of any arithmetic comparison with NULL is also NULL, you cannot obtain any meaningful results from such comparisons.

In MySQL, 0 or NULL means false and anything else means true. The default truth value from a boolean operation is 1.

您可以使用is nullis not null比较

mysql> select  'TEST STRING' is not null;
+---------------------------+
| 'TEST STRING' is not null |
+---------------------------+
|                         1 |
+---------------------------+

无法使用 NULL 运算符执行算术比较。因此,当您使用 <>!= 之类的 NULL 执行算术运算时,它会给您 NULL(一个 无意义的值 ) 作为布尔值。

可以参考MySQL来解释MySQL中的NULL是如何工作的。

还要注意在MySql中NULL是特殊的,它表示unknown值,而在编程中它表示undefined value.