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 null
或is 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
.
我 运行 遇到了一个问题。
谁能解释一下原因
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 null
或is 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
.