2017-08-21 191 views
0

当我运行下面的查询时,我得到12行,当我应该有6(那些'第一'不是空的)任何理由为什么iam得到所有12?因为他们是未来的日子,他们是空的,但我想让桌上显示全年的日期。我已经使用varchar而不是int,对于我不知道的良好实践的第一次。NOT NULL返回NULL值

SELECT * 
FROM office_figures 2016 
WHERE date_figures=2017 AND firsts IS NOT NULL 

mysql table

+0

'firsts'是空的,而不是'NULL',你必须用'NULL'或设置默认为'NULL'填充它们。 –

+0

当你说填充null ..你是说实际上把'空'在细胞中? – Glen

回答

1

也许你不想在那里的第一个不是null,它们可能只是空字符串''。 试试这个:

SELECT * 
FROM office_figures 2016 
WHERE date_figures=2017 AND firsts IS NOT NULL AND firsts != '' 
+0

非常感谢,它的工作。我现在真的需要知道这一点,而不是问,你能指点我一本教你的参考书吗? – Glen

1
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
检查上面的链接了解更多。