如何获取表中具有空值的行,并且没有任何关于任何列名的行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取表中具有空值的行,并且没有任何关于任何列名的行?相关的知识,希望对你有一定的参考价值。

我有一张桌子如下

create table col(id int,name varchar(max))
insert into col values(1,'n1'),(2,'n2'),(3,'n3'),(4,null)

我需要第四行的输出具有空值。但我不知道表中的列名,我只知道表名。

能帮忙解决这个问题吗?

答案

这是奇怪的情况。为什么你需要这样做呢?但无论如何,您可以从sys.syscolumns表中获取列的名称并构造一个动态查询,在哪里检查每个列是否为null,如下所示:

select * from col where 1=2 or id is null or name is null

整个查询可以如下:

create table col(id int,name varchar(max))
insert into col values(1,'n1'),(2,'n2'),(3,'n3'),(4,null)

declare @TableName sysname = N'col'

declare @sql nvarchar(max) = N'select * from ' + @TableName + ' where 1=2';

select @sql += ' or ' + name + ' is null'
from sys.syscolumns
where id = object_id(@TableName) and isnullable = 1

-- print @sql
exec sp_executesql @sql

以上是关于如何获取表中具有空值的行,并且没有任何关于任何列名的行?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除具有太多 NULL 值的行?

复制没有空值的 NSDictionary?

从具有特定值的表中获取列名

如何从两个表中选择同一字段中具有相同值的行?

在表中为每个数据库查找具有空值的列[关闭]

计算非空值的行