无法接收字段值为0或NULL的结果

时间:2017-08-09 15:02:44

标签: mysql

如何从字段值为0NULL的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?

中回显所有结果

3 个答案:

答案 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 != 1NULL而不是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