我遇到一个问题,当我尝试选择某个列的值为NULL的行时,它将返回一个空集。但是,当我查看phpMyAdmin中的表时,对于大多数行,它表示为null。
我的查询看起来像这样:
SELECT pid FROM planets WHERE userid = NULL
每次都清空。
据说有很多地方都确保不会将其存储为“ NULL”或“ null”,而不是实际值,还有一个地方试图仅查找空格(userid = ' '),但没有一个起作用。有人建议不要使用MyISAM并使用innoDB,因为MyISAM无法存储null。我将表切换到innoDB,但是现在我觉得问题可能是由于它可能转换表的方式实际上实际上仍然不是null。我想这样做,而不必将表重新创建为innoDB或其他任何形式,但是如果需要的话,我当然可以尝试一下。
userid = ' '
SQL NULL的特殊之处,您必须这样做WHERE field IS NULL,因为NULL不能等于任何东西,
WHERE field IS NULL
包括自身(即:NULL = NULL始终为false)。
参见Rule 3 https://en.wikipedia.org/wiki/Codd%27s_12_rules
Rule 3