2014-12-30 111 views
3

我有一个名为'datatablecoulmn'的表格,它包含以下列。 enter image description here使用mysql查询在整数列中选择空值的行

现在我想所有行列FkID是NULL.FkID是整场

我尝试以下查询

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

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

回答

7

在MySQL中,NULL被认为是'缺少的未知值',而不是没有值。任何与NULL的算术比较都不返回true或false,而是返回NULL,所以,NULL!='C'返回NULL,而不是返回true。在查询

使用IS NULL条件,并尝试这样

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

对于处理空值MySQL提供了三大运营商

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

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

< =>:运算符比较值,即使对于两个NULL值,它(与=运算符不同)的值也为真 。

您可以参考以下链接了解更多

Link 1Link 2Link 3

1

使用类似:

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

NULL是一个占位符说有没有一个值。这就是为什么你只能使用IS NULL/IS NOT NULL作为这种情况的谓词,而不是用于值的使用=或!=或<>。

2

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

出于同样的原因,NaN(非数字)在IEEE754浮点不等于的NaN其他实例(或者甚至相同的实例),时间没有SQL等于NULL,包括NULL

在这个时候,可能听起来很奇怪,但是,当你想到的NULL的目的,即指定未知或不恰当的值,这是有道理的。

为了查看是否值是NULL,你不得不因此使用这样的:

where COLUMN_NAME is null 

更多细节与在MySQL NULL工作可以发现here

2

你不能与NULL比较。所以,你得检查YourColumn IS NULL(或者YourColumn IS NOT NULL

0

这里是另一种方式来排除与FkID记录不为空:

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