我有一个超过 200 万行和 100 多列的表。我需要运行一个查询来检查表的任何行或列中是否有任何空值,并在有空的地方返回一个 ID 号。我已经考虑过执行以下操作,但我想知道是否有更简洁的检查方法?
SELECT [ID]
from [TABLE_NAME]
where
[COLUMN_1] is null
or [COLUMN_2] is null
or [COLUMN_3] is null or etc.
我有一个超过 200 万行和 100 多列的表。我需要运行一个查询来检查表的任何行或列中是否有任何空值,并在有空的地方返回一个 ID 号。我已经考虑过执行以下操作,但我想知道是否有更简洁的检查方法?
SELECT [ID]
from [TABLE_NAME]
where
[COLUMN_1] is null
or [COLUMN_2] is null
or [COLUMN_3] is null or etc.
你的方法很好。如果您的挑战是写出where
语句,那么您可以运行如下查询:
select column_name+' is null or '
from information_schema.columns c
where c.table_name = 'table_name'
然后将结果复制到查询窗口中,并使用它们来构建查询。
我使用 SQL Server 语法进行查询,因为看起来您正在使用 SQL Server。大多数数据库都支持这些INFORMATION_SCHEMA
表,但字符串连接的语法因数据库而异。请记住在最后一次比较结束时删除 final or
。
您还可以将列列表复制到 Excel 中并使用 Excel 公式创建列表。
您可以使用类似于以下内容的内容:
声明@T 表 ( ID 整数, 名称 varchar(10), 年龄整数, 城市 varchar(10), 邮编 varchar(10) ) 插入@T 值 (1, '亚历克斯', 32, '迈阿密', NULL), (2,空,24,空,空) ;使用 xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' 作为 ns) 选择身份证, ( 选择 * 从@T 作为 T2 其中 T1.ID = T2.ID 对于 xml 路径('row'),元素 xsinil,类型 ).value('count(/row/*[@ns:nil = "true"])', 'int') as NullCount 从@T 作为 T1