MySQL:选择列为空的行

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


我的查询看起来像这样:


SELECT pid FROM planets WHERE userid = NULL

每次都清空。


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


芜湖不芜
浏览 944回答 4
4回答

慕工程0101907

SELECT pid FROM planets WHERE userid IS NULL

慕盖茨4494581

给出所有答案后,我想补充一点。我也遇到过同样的问题。为什么查询失败?你有,SELECT pid FROM planets WHERE userid = NULL;这不会给您预期的结果,因为来自mysql doc在SQL中,与其他任何值(甚至是NULL)相比,NULL值从不为真。包含NULL的表达式始终会产生NULL值,除非文档中针对表达式中涉及的运算符和函数另有说明。强调我的。要搜索为的列值NULL,您不能使用expr = NULL测试。以下语句不返回任何行,因为expr = NULL对于任何表达式都不是真的解SELECT pid FROM planets WHERE userid IS NULL; 要进行测试NULL,请使用IS NULL和IS NOT NULL运算符。运算符IS NULL测试值是否为NULL。操作符IS NOT NULL测试值是否不是NULL。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL