MySQL列的值为空,但为“0”;是空的;它不起作用了
我有一个mySQL表和一个包含null和notnull数据的列 在运行query和visibly时,我可以看到BLOCKER列具有空值MySQL列的值为空,但为“0”;是空的;它不起作用了,mysql,sql,Mysql,Sql,我有一个mySQL表和一个包含null和notnull数据的列 在运行query和visibly时,我可以看到BLOCKER列具有空值 mysql> select count(1), BLOCKER from mysql.PRSSTATE group by BLOCKER; +----------+----------------+ | count(1) | BLOCKER | +----------+----------------+ | 193403 |
mysql> select count(1), BLOCKER from mysql.PRSSTATE group by BLOCKER;
+----------+----------------+
| count(1) | BLOCKER |
+----------+----------------+
| 193403 | |
| 350 | Beta |
| 24 | Build |
若我发出如下所示的查询,我得到的计数(1)为零
mysql> select count(1) from mysql.PRSSTATE where BLOCKER is NULL;
+----------+
| count(1) |
+----------+
| 0 |
+----------+
1 row in set (0.13 sec)
我的疑问是,它可能具有特殊的特性,因为我已经将数据从其他系统迁移到这个表中。想知道如何解决这个问题。它应该通过“is null”语句显示。
拦截器的长度可能为零:
select count(1) from mysql.PRSSTATE where (BLOCKER is NULL or BLOCKER = "");
阻止程序
的长度可能为零:
select count(1) from mysql.PRSSTATE where (BLOCKER is NULL or BLOCKER = "");
这里的问题是,您错误地假设阻止程序为空。实际上,您存储的是空字符串(“”),而不是空值。您应该修改查询以匹配NULL和“”值:
或者,当您没有拦截器列的数据或只是不传递任何内容时,修改脚本(或用于创建这些记录的任何内容)以插入NULL值,并确保拦截器列的定义设置为默认NULL
如果BLOCKER为NULL,则您将从第一次查询中获得以下输出:
+----------+----------------+
| count(1) | BLOCKER |
+----------+----------------+
| 193403 | NULL |
| 350 | Beta |
| 24 | Build |
+----------+----------------+
这里的问题是,您错误地假设阻止程序为空。实际上,您存储的是空字符串(“”),而不是空值。您应该修改查询以匹配NULL和“”值:
或者,当您没有拦截器列的数据或只是不传递任何内容时,修改脚本(或用于创建这些记录的任何内容)以插入NULL值,并确保拦截器列的定义设置为默认NULL
如果BLOCKER为NULL,则您将从第一次查询中获得以下输出:
+----------+----------------+
| count(1) | BLOCKER |
+----------+----------------+
| 193403 | NULL |
| 350 | Beta |
| 24 | Build |
+----------+----------------+
这是一个空字符串,不是空值。这是一个空字符串,不是空值。