这是我的测试表:
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`thetime` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `test` (`thetime`) VALUES ('2013-02-26 18:07:00');
INSERT INTO `test` (`thetime`) VALUES (NULL);
INSERT INTO `test` (`thetime`) VALUES (NULL);
SELECT * FROM test:
id | thetime
------------------------
1 | 2013-01-01 00:00:00
2 | null
3 | null
SELECT * from test where time<> '2013-01-01 00:00:00':
id | thetime
------------------------
empty result set
我希望在字段null
中获得thetime
值的2条记录
id | thetime
------------------------
2 | null
3 | null
我想知道为什么我没有得到这个结果的值null与'2013-01-01 00:00:00'不同
有谁知道?
干杯, 马克西姆
答案 0 :(得分:5)
您获得空结果的原因是因为null
未定义。
如果要比较空值,请使用IS NULL
SELECT *
from test
where thetime IS NULL OR
thetime <> '2013-01-01 00:00:00'
答案 1 :(得分:2)
试试这样:
SELECT *
FROM test
WHERE thetime <> '2013-01-01 00:00:00'
OR thetime IS NULL
请参阅文档以获取进一步阅读: