我遇到一个问题,当我尝试选择某个列的值为NULL的行时,它将返回一个空集。但是,当我查看phpMyAdmin中的表时,对于大多数行,它表示为null。我的查询看起来像这样:SELECT pid FROM planets WHERE userid = NULL每次都清空。据说有很多地方都确保不会将其存储为“ NULL”或“ null”,而不是实际值,还有一个地方试图仅查找空格(userid = ' '),但没有一个起作用。有人建议不要使用MyISAM并使用innoDB,因为MyISAM无法存储null。我将表切换到innoDB,但是现在我觉得问题可能是由于它可能转换表的方式实际上实际上仍然不是null。我想这样做,而不必将表重新创建为innoDB或其他任何形式,但是如果需要的话,我当然可以尝试一下。
4 回答
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
给出所有答案后,我想补充一点。我也遇到过同样的问题。
为什么查询失败?你有,
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。
添加回答
举报
0/150
提交
取消