使用mysql查询选择整数列中带空值的行

时间:2014-12-30 07:43:13

标签: mysql

我有一张名为' datatablecoulmn'使用以下列。 enter image description here

现在我想要列FkID为NULL的所有行.FkID是一个整数字段

我尝试了以下查询

             SELECT * FROM `datatablecoulmn` WHERE `FkID`=NULL
             SELECT * FROM `datatablecoulmn` WHERE `FkID`<1
             SELECT * FROM `datatablecoulmn` WHERE `FkID`='null'

所有这些都返回空行。任何帮助?

5 个答案:

答案 0 :(得分:7)

在MySQL中,NULL被认为是一个“缺失的未知值”,而不是没有值。任何与NULL的算术比较都不会返回true或false,而是返回NULL。所以,NULL!=&#39; C&#39;返回NULL,而不是返回true。

在您的查询中使用IS NULL条件,并尝试这样

SELECT * FROM `datatablecoulmn` WHERE `FkID` IS NULL

为了处理NULL值,MySQL提供了三个运算符

  

IS NULL:如果列值为NULL,则运算符返回true。

     

IS NOT NULL:如果列值不为NULL,则运算符返回true。

     

&lt; =&gt;:运算符比较值(与=运算符不同)为真    即使是两个NULL值。

您可以参考这些链接了解更多信息

Link 1Link 2Link 3

答案 1 :(得分:2)

NULL是一个类似infinity的数字。换句话说,根本不是。 NULL是某些信息的缺席

出于同样的原因,IEEE754浮点中的NaN(不是数字)不等于NaN的其他实例(甚至是同一个实例),SQL中没有任何内容等于{{ 1}},包括NULL

那些可能听起来很奇怪的东西,但是当你想到NULL的目的时,那就是指定未知或不合适的值,这是有道理的。

为了查看某个值是否为NULL,您必须使用以下内容:

NULL

有关在MySQL中使用where COLUMN_NAME is null 的更多详细信息,请访问here

答案 2 :(得分:2)

您无法与NULL进行比较。所以你必须检查YourColumn IS NULL(或者YourColumn IS NOT NULL

答案 3 :(得分:1)

使用类似:

SELECT * FROM `datatablecoulmn` WHERE `FkID` is NULL

NULL是一个占位符,表示没有值。这就是为什么你只能使用IS NULL / IS NOT NULL作为这种情况的谓词而不是=或!=或&lt;&gt;由值使用。

答案 4 :(得分:0)

以下是排除FkID NOT NULL的记录的另一种方法:

SELECT D1.*
FROM datatablecoulmn D1
WHERE NOT EXISTS (SELECT D2.* 
                  FROM datatablecoulmn D2
                  WHERE D2.`FkID` IS NOT NULL)