1

这是我的测试表:

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);

从测试中选择 *:

id | thetime
------------------------
1  | 2013-01-01 00:00:00
2  | null
3  | null

SELECT * from test where thetime <> '2013-01-01 00:00:00':

id | thetime
------------------------
empty result set

我预计会null在该字段中获得 2 条具有值的记录thetime

id | thetime
------------------------
2  | null
3  | null

我想知道为什么我没有得到这个结果的值 null 与 '2013-01-01 00:00:00' 不同

有谁知道?

干杯,马克西姆

4

2 回答 2

6

你得到空结果的原因是因为null没有定义。

当您想比较空值时,请使用IS NULL

SELECT * 
from   test 
where thetime IS NULL OR
      thetime <> '2013-01-01 00:00:00' 
于 2013-02-27T07:20:58.367 回答
3

试试这样:

SELECT * 
FROM test 
WHERE thetime <> '2013-01-01 00:00:00' 
   OR thetime IS NULL

请参阅文档以进一步阅读:

于 2013-02-27T07:22:30.177 回答