我遇到了一个问题。
谁能解释一下为什么
SELECT (null <> 'TEST STRING')和
SELECT (null != 'TEST STRING')返回NULL,而不是您所期望的布尔值true?
我不是在寻找解决方案,而是要解释为什么SQL会这样运行。
无论哪种语言返回布尔值,您都会期望有任何比较。
发布于 2015-04-18 09:25:29
不能用空运算符执行算术比较。因此,当您使用NULL (如<>和!= )执行标识符操作时,它给您的是NULL(一个无意义的值),而您的期望是布尔值。
可以参考MySQL来解释MySQL中NULL是如何工作的。
还请注意,在MySql NULL中是特殊的,它意味着unknown值,而在编程中它意味着undefined value。
发布于 2015-04-18 09:21:59
不能使用算术比较运算符(如=、<或<> )来测试NULL。https://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
由于任何带有NULL的算术比较的结果也是NULL,因此无法从这些比较中获得任何有意义的结果。 在MySQL中,0或NULL表示false,其他任何东西都表示true。布尔操作的缺省真值为1。
您可以使用is null或is not null比较
mysql> select 'TEST STRING' is not null;
+---------------------------+
| 'TEST STRING' is not null |
+---------------------------+
| 1 |
+---------------------------+https://stackoverflow.com/questions/29715316
复制相似问题