一尘不染

MySQL:选择列为空的行

mysql

我遇到一个问题,当我尝试选择某个列的值为NULL的行时,它将返回一个空集。但是,当我查看phpMyAdmin中的表时,对于大多数行,它表示为null。

我的查询看起来像这样:

SELECT pid FROM planets WHERE userid = NULL

每次都清空。

据说有很多地方都确保不会将其存储为“ NULL”或“ null”,而不是实际值,还有一个地方试图仅查找空格(userid = ' '),但没有一个起作用。有人建议不要使用MyISAM并使用innoDB,因为MyISAM无法存储null。我将表切换到innoDB,但是现在我觉得问题可能是由于它可能转换表的方式实际上实际上仍然不是null。我想这样做,而不必将表重新创建为innoDB或其他任何形式,但是如果需要的话,我当然可以尝试一下。


阅读 388

收藏
2020-05-17

共1个答案

一尘不染

SQL NULL的特殊之处,您必须这样做WHERE field IS NULL,因为NULL不能等于任何东西,

包括自身(即:NULL = NULL始终为false)。

参见Rule 3
https://en.wikipedia.org/wiki/Codd%27s_12_rules

2020-05-17