我遇到了一个问题。
有人可以解释原因吗
SELECT (null <> 'TEST STRING')
和
SELECT (null != 'TEST STRING')
返回NULL而不是你想要的布尔值true吗?
我不是在寻找解决方案,而是为了解释为什么SQL会像这样。
无论用什么语言,你都希望任何比较都能返回一个布尔值。
答案 0 :(得分:2)
您不能使用算术比较运算符,例如=,&lt;或&lt;&gt;测试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 |
+---------------------------+
答案 1 :(得分:2)
无法使用NULL运算符执行算术比较。因此,当您使用<>
和!=
之类的NULL执行arithemetic操作时,它会根据您的预期给出NULL(一个无意义的值)作为布尔值。
可以参考MySQL来解释NULL如何在MySQL中工作。
另请注意,在MySql中,NULL是特殊的,它意味着unknown
值,而在编程时它意味着undefined value
。