我遇到了一个问题,当我试图为某个列 Select 空的行时,它返回一个空集.然而,当我查看phpMyAdmin中的表时,大多数行都显示为null.

我的查询如下所示:

SELECT pid FROM planets WHERE userid = NULL

每次都是空的.

很多地方都说要确保它不会被存储为"NULL"或"NULL"而不是实际值,还有一个地方说要try 只寻找一个空格(userid = ' '),但这些都不起作用.有人建议不要使用MyISAM和innoDB,因为MyISAM无法存储null.我将表切换到innoDB,但现在我觉得问题可能是,由于它可能转换它的方式,它实际上仍然不是空的.我想这样做,而不必将表重新创建为innoDB或其他任何东西,但如果必须这样做,我当然可以try .

推荐答案

SQL NULL是特殊的,你必须做WHERE field IS NULL,因为NULL不能等于任何东西,

包括它本身(即:NULL=NULL总是false)

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

Mysql相关问答推荐

未知变量default-validation-plugin=mysql_native_passenger'

mySQL错过字符串计数,错误?

是否有一种方法可以在mysql中设置一列,使其自动成为该行的行号的值?

MySQL将JSON值从对象类型更改为数组

在MySQL和JavaFX中保存和检索图像文件

插入时发生日期时间字段溢出错误

根据日期重叠转换表格

Ballerina SQL 中是否也应该考虑输入清理?

将 GORM 与自定义连接表和外键结合使用

MySQL如何在触发器内部 Select 多行然后插入它们

MySQL 8.0 可以在 Select 语句中返回 JSON 对象数组吗?

Select 并统计所有条目并根据条目对它们进行分组

查询以查找可用时隙

主键应该始终是无符号的?

什么是 PyMySQL,它与 MySQLdb 有何不同?它会影响 Django 部署吗?

默认为空字符串的列

如何从 MySQL Workbench 中的图表生成 SQL 脚本?

我应该使用什么列数据类型来存储大量文本或 html

在 PHP/MySQL 中将日期时间存储为 UTC

设计用户角色和权限系统的最佳实践?