我有一个超过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.
答案 0 :(得分:4)
你的方法很好。如果您的挑战是写出where
语句,那么您可以运行如下查询:
select column_name+' is null or '
from information_schema.columns c
where c.table_name = 'table_name'
然后将结果复制到查询窗口并使用它们构建查询。
我使用SQL Server语法进行查询,因为它看起来像是在使用SQL Server。大多数数据库都支持INFORMATION_SCHEMA
表,但字符串连接的语法因数据库而异。请务必在上次比较结束时删除最终or
。
您还可以将列列表复制到Excel中,并使用Excel公式创建列表。
答案 1 :(得分:2)
您可以使用类似于以下内容的内容:
declare @T table ( ID int, Name varchar(10), Age int, City varchar(10), Zip varchar(10) ) insert into @T values (1, 'Alex', 32, 'Miami', NULL), (2, NULL, 24, NULL, NULL) ;with xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' as ns) select ID, ( select * from @T as T2 where T1.ID = T2.ID for xml path('row'), elements xsinil, type ).value('count(/row/*[@ns:nil = "true"])', 'int') as NullCount from @T as T1