我有一张名为' datatablecoulmn'使用以下列。
现在我想要列FkID为NULL的所有行.FkID是一个整数字段
我尝试了以下查询
SELECT * FROM `datatablecoulmn` WHERE `FkID`=NULL
SELECT * FROM `datatablecoulmn` WHERE `FkID`<1
SELECT * FROM `datatablecoulmn` WHERE `FkID`='null'
所有这些都返回空行。任何帮助?
答案 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值。
您可以参考这些链接了解更多信息
答案 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)