2014-02-23 42 views
0

我有一個表格linksbase是填充值。 lastvisited是datetime,並且在任何地方都是NULL(允許爲null)。我跑在phpMyAdmin查詢(通過Java一樣),然後轉到空的結果:MySQL日期時間NULL問題,'='和'!='返回0行

SELECT `id` FROM `linksbase` WHERE `lastvisited` = NULL 

更重要的是,如果我跑

SELECT `id` FROM `linksbase` WHERE `lastvisited` != NULL 

我也得到emplty結果。 如果我運行

SELECT * FROM linksbase WHERE 1

我得到這樣的應(因此,它的工作)的行的列表。

查詢出了什麼問題,爲什麼兩個互斥查詢返回0行。

+0

你嘗試過'IS'就像'WHERE lastvisited IS NULL','WHERE lastvisited is NOT NULL' –

+0

NULL既不等於也不等於任何東西。甚至不是NULL! – Strawberry

回答

3

您應該使用

SELECT `id` FROM `linksbase` WHERE `lastvisited` IS NULL 

SELECT `id` FROM `linksbase` WHERE `lastvisited` IS NOT NULL 
+0

它的工作!爲什麼=和!=使用錯誤? – Tigran

+1

@Tigran [3.3.4.6使用NULL值](http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html)因爲與NULL進行任何算術比較的結果也是NULL,你不能從這種比較中獲得任何有意義的結果。 –

+0

@GrijeshChauhan他們允許檢查我的答案 –

3

您應該使用IS NULLIS NOT NULL,而不是與!!=運營商比較空。那些將永遠是錯誤的。

如果你有空列,而不是空
0

,然後再考慮使用此

SELECT `id` FROM `linksbase` WHERE `lastvisited` = '' OR `lastvisited` IS NULL 

這將尋找空列和列空。