我有一个超过 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
并且只能运行查询。
(据我所知)没有办法在不明确列出所有列名称的情况下检查所有列是否包含
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
。 查看演示。
试试这个:PRAGMA table_info(Table_Name);
这将返回有关表中列的信息,包括它们是否允许 NULL 值。在结果中查找 notnull 列。如果任何列的值为 0,则表示该列允许 NULL 值。如果所有列的值为 1,则意味着没有列允许 NULL 值。