Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在存在空值的表中返回列名?_Sql - Fatal编程技术网

Sql 如何在存在空值的表中返回列名?

Sql 如何在存在空值的表中返回列名?,sql,Sql,我有一个超过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 c

我有一个超过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。大多数数据库支持信息模式表,但字符串连接的语法因数据库而异。记住删除最后一个或在最后一次比较结束时删除


您还可以将列列表复制到Excel中,并使用Excel公式创建列表。

您可以使用类似于以下内容的内容:

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
最好的方法是:不要创建这么大的表,您使用的是哪种DBMS?SQL Server?我正在使用Microsoft SQL Server管理研究这已经被问了好几次了。在dba.stackexchange上查看这个答案和链接副本:不管你能得到多么简洁的答案:所有200万行都将用OR扫描,这很聪明。我知道关于信息的模式,但我从来没有想过要涉及到列名的末尾。谢谢你的帮助!