如何从字段值为0
或NULL
的mysql表中接收结果?如果我写条件field
!= 1,它什么都没有,但有很多字段field
!= 1。为什么呢?
更新:
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`somevar` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `test` (`id`, `somevar`)
VALUES
(1,1),
(2,0),
(3,NULL),
(4,NULL),
(5,0);
此查询
SELECT * FROM `test` WHERE `somevar`!=1
仅返回somevar
= 0但不是NUL的位置。如何在somevar
!= 1?
答案 0 :(得分:2)
您可以使用NULL-safe equal to operator:
// Schedule a job using a factory method and pass parameters to the constructor.
Schedule(() => new MyJob(new ApplicationDbContext())).ToRunNow().AndEvery(2).Seconds();
请参阅db-fiddle。
答案 1 :(得分:1)
您可以使用somevar IS NULL
。对于mysql,NULL是未知值,因此NULL != 1
是NULL
而不是true
。有关详细信息,请查看mysql documentation
SELECT * FROM `test` WHERE `somevar` IS NULL OR `somevar`!=1
答案 2 :(得分:1)
本网站已经多次回答过这个问题。 NULL既不等也不等于其他任何东西。它无法以传统方式进行比较。您必须明确要求NULL值。
SELECT * FROM `test` WHERE `somevar`!=1 OR `somevar` IS NULL