[英]null value not found in database
我有一个带有名为“状态”的列的InnoDB表。 当代码运行异常时,可以用'succes'或'special'或NULL填充。
我有一个cronjob,它查看此表并尝试重新处理状态为“成功”或“特殊”以外的行。 但是我注意到,它不起作用。
所以我用以下查询查询表:
SELECT * FROM master_innodb.some_table WHERE status
!='成功'AND status
!='特殊';
它返回0行。
当我将期望其从状态NULL返回的行更改为空字段时,查询将返回此行。
有人可以解释吗?
问候,
Matthijs
因此,我认为您可以多了解一些有关NULL值在MySQL数据库中表示的内容。 在最好的情况下,NULL可能是令人困惑的野兽。 从MySQL文档 :
在您习惯之前,NULL值可能令人惊讶。 从概念上讲,NULL表示“缺少未知值”,并且与其他值的处理方式有所不同。
因此,NULL几乎意味着“没有数据”。 因此,当您指定以下谓词时:
status != 'success' AND status != 'special'
然后,由于我们不知道status
为NULL的行是等于“成功”还是等于“特殊”,所以不返回status
列中具有NULL的行。 因此,它不会返回。
您可以尝试以下操作,而不是在CRON作业中获取要重新处理的行:
SELECT * FROM master_innodb.some_table WHERE status is null;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.