使用 SQLite 检查表的所有列中的空值

问题描述 投票:0回答:2

我有一个超过 15 列的表格。其中 2 个是 varchar 类型,大部分是 int 和 float 类型。

我是 SQL 新手,正在尝试找出一种方法来检查其中是否有任何列包含 NULL 值。

如果只有 4 或 5 列,我可以用

单独检查它们
SELECT COUNT(*) FROM table_name WHERE col1 IS NULL OR col2 IS NULL OR col3 IS NULL ...

但是有没有什么有效的方法可以专门在

SQLite
中的很多列上执行此操作?

我已经提到了与此相关的其他问题here,但我无法使用 xml 或存储任何内容。另外,我正在使用

SQLite
并且只能运行查询。

sqlite
2个回答
2
投票

(据我所知)没有办法在不明确列出所有列名称的情况下检查所有列是否包含

null

您的查询是正确的方法。

如果您想缩短(不是显着)代码,您可以使用以下替代方案:

SELECT COUNT(*) FROM table_name WHERE col1 + col2 + col3 IS NULL;

或:

SELECT COUNT(*) FROM table_name WHERE col1 || col2 || col3 IS NULL;

或:

SELECT COUNT(*) FROM table_name WHERE MAX(col1, col2, col3) IS NULL;

上述查询适用于任何数据类型的列,因为即使只有 1 列等于

null
,那么加法、串联和标量函数
MAX()
(和
MIN()
)都会返回
null

查看演示


0
投票

试试这个:PRAGMA table_info(Table_Name);

这将返回有关表中列的信息,包括它们是否允许 NULL 值。在结果中查找 notnull 列。如果任何列的值为 0,则表示该列允许 NULL 值。如果所有列的值为 1,则意味着没有列允许 NULL 值。

© www.soinside.com 2019 - 2024. All rights reserved.