MySql在比较时返回NULL

时间:2015-04-18 09:19:08

标签: mysql comparison

我遇到了一个问题。

有人可以解释原因吗

SELECT (null <> 'TEST STRING')

SELECT (null != 'TEST STRING')

返回NULL而不是你想要的布尔值true吗?

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

无论用什么语言,你都希望任何比较都能返回一个布尔值。

2 个答案:

答案 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 nullis 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