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

SELECT * FROM テスト:

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が定義されていないためです。

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 に答える