我有一张桌子如下
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