首页 > 解决方案 > MySQL:查找可能为 NON NULL 的 NULLable 列

问题描述

我正在为一个关于 NON NULL 列的卫生状况不佳的数据库而苦苦挣扎。

某些列总是有数据,即它们可能是 NON NULL,但它们不是。当我期望他们总是有数据但他们没有时,其他人让我感到惊讶,并且我触发了空指针异常。

我想知道哪些列中没有 NULL 条目,即可能是 NON NULL,但事实并非如此。现在我知道我可以做到这一点:

SELECT DISTINCT(column) FROM table WHERE column IS NULL

但理想情况下,我不必逐列、逐表执行此操作。有没有办法自动化这个?

标签: mysql

解决方案


你确实需要一张一张地做。

但是您可以像这样查询来计算 NULL 的实例:

SELECT COUNT(*) AS total_rows,
  SUM(column1 IS NULL) AS column1_nulls,
  SUM(column2 IS NULL) AS column2_nulls,
  SUM(column3 IS NULL) AS column3_nulls,
  ...for all the columns...
FROM mytable;

在 MySQL 中,布尔表达式计算为整数 1 或 0。因此 1 和 0 的 SUM() 等价于布尔表达式为真的 COUNT()。这个技巧允许您在所有行上计算多个事物,而无需使用 WHERE 条件。


推荐阅读