为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL:选择列为空的行

MySQL:选择列为空的行

芜湖不芜 2019-10-06 15:55:05
我遇到一个问题,当我尝试选择某个列的值为NULL的行时,它将返回一个空集。但是,当我查看phpMyAdmin中的表时,对于大多数行,它表示为null。我的查询看起来像这样:SELECT pid FROM planets WHERE userid = NULL每次都清空。据说有很多地方都确保不会将其存储为“ NULL”或“ null”,而不是实际值,还有一个地方试图仅查找空格(userid = ' '),但没有一个起作用。有人建议不要使用MyISAM并使用innoDB,因为MyISAM无法存储null。我将表切换到innoDB,但是现在我觉得问题可能是由于它可能转换表的方式实际上实际上仍然不是null。我想这样做,而不必将表重新创建为innoDB或其他任何形式,但是如果需要的话,我当然可以尝试一下。
查看完整描述

4 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

SELECT pid FROM planets WHERE userid IS NULL


查看完整回答
反对 回复 2019-10-06
?
慕盖茨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。


查看完整回答
反对 回复 2019-10-06
  • 4 回答
  • 0 关注
  • 943 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信