当我运行下面的查询时,我得到12行,当我应该有6(那些'第一'不是空的)任何理由为什么iam得到所有12?因为他们是未来的日子,他们是空的,但我想让桌上显示全年的日期。我已经使用varchar而不是int,对于我不知道的良好实践的第一次。NOT NULL返回NULL值
SELECT *
FROM office_figures 2016
WHERE date_figures=2017 AND firsts IS NOT NULL
当我运行下面的查询时,我得到12行,当我应该有6(那些'第一'不是空的)任何理由为什么iam得到所有12?因为他们是未来的日子,他们是空的,但我想让桌上显示全年的日期。我已经使用varchar而不是int,对于我不知道的良好实践的第一次。NOT NULL返回NULL值
SELECT *
FROM office_figures 2016
WHERE date_figures=2017 AND firsts IS NOT NULL
也许你不想在那里的第一个不是null,它们可能只是空字符串''。 试试这个:
SELECT *
FROM office_figures 2016
WHERE date_figures=2017 AND firsts IS NOT NULL AND firsts != ''
非常感谢,它的工作。我现在真的需要知道这一点,而不是问,你能指点我一本教你的参考书吗? – Glen
SELECT *
FROM office_figures 2016
WHERE date_figures=2017 AND firsts IS NOT NULL AND firsts !="";
您需要为您在列空值,以及 “”!= NULL。
空值是没有值。一个空字符串是一个值,但是 只是空的。空对于数据库来说是特殊的。
Null没有界限,它可以用于数据库中的字符串,整数,日期等 字段。
NULL没有分配任何内存,具有NUll值的字符串只是一个 指针,它指向内存中任何地方。然而,尽管存储在 存储器中的值是“”,但分配给存储器位置的是空的IS 。
Difference between NULL and Blank Value in Mysql
检查上面的链接了解更多。
'firsts'是空的,而不是'NULL',你必须用'NULL'或设置默认为'NULL'填充它们。 –
当你说填充null ..你是说实际上把'空'在细胞中? – Glen