mysql - MySQL:查找可能为 NON NULL 的 NULLable 列
问题描述
我正在为一个关于 NON NULL 列的卫生状况不佳的数据库而苦苦挣扎。
某些列总是有数据,即它们可能是 NON NULL,但它们不是。当我期望他们总是有数据但他们没有时,其他人让我感到惊讶,并且我触发了空指针异常。
我想知道哪些列中没有 NULL 条目,即可能是 NON NULL,但事实并非如此。现在我知道我可以做到这一点:
SELECT DISTINCT(column) FROM table WHERE column IS NULL
但理想情况下,我不必逐列、逐表执行此操作。有没有办法自动化这个?
解决方案
你确实需要一张一张地做。
但是您可以像这样查询来计算 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 条件。
推荐阅读
- java - 在这种情况下如何处理 nullsFirst
- ffmpeg - Ffmpeg rtmp 到 hls 的转换但是如何解决网络问题?
- java - 从 Firestore 增加值
- java - 如何在android studio中使用parcelable在活动之间传递数据
- javascript - Firebase Cloud Functions onUpdate 触发器向 Firestore 返回不可靠的时间戳
- windows - linux中多个文件或每三行的平均广告标准偏差
- python - Pandas:我可以在列的模式上使用 round() 方法吗?
- jquery - 显示和隐藏一个问题的文本功能。如何删除最初的“少显示”元素?
- java - 如何解析通过将字符串拆分为 Java 中的 Int 值而获得的数据?
- javascript - 为什么javascript数组中没有直接的“删除”方法?