小编典典

如何查找哪些列没有任何数据(所有值均为NULL)?

sql

我在数据库中有几个表。我想查找哪些列(在哪些表中)没有任何值(列中都为NULL)。在下面的示例中,结果应该是

TestTable1 --> Var2
TestTable2 --> Variable1

我不知道如何创建这种查询。非常感谢您的帮助!

--create first table
create table dbo.TestTable1 (
sur_id int identity(1,1) not null primary key,
var1 int null,
var2 int null
)
go

--insert some values
insert into dbo.TestTable1 (var1) 
    select 1 union all select 2 union all select 3

--create second table
create table dbo.TestTable2 (
sur_id int identity(1,1) not null primary key,
variable1 int null,
variable2 int null
)

--and insert some values
insert into dbo.TestTable2 (variable2) 
    select 1 union all select 2 union all select 3

阅读 233

收藏
2021-05-05

共1个答案

小编典典

对于单列,count(ColumnName)返回ColumName不为null的行数:

select  count(TheColumn)
from    YourTable

您可以为所有列生成查询。根据Martin的建议,您可以使用排除不能为空的列is_nullable = 1。例如:

select  'count(' + name + ') as ' + name + ', '
from    sys.columns
where   object_id = object_id('YourTable')
        and is_nullable = 1

如果表的数量很大,则可以类似的方式为所有表生成查询。所有表的列表在中sys.tables

2021-05-05