2

我有一个超过 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.
4

2 回答 2

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表,但字符串连接的语法因数据库而异。请记住在最后一次比较结束时删除 final or

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

于 2013-07-12T14:20:56.167 回答
2

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

声明@T 表
(
  ID 整数,
  名称 varchar(10),
  年龄整数,
  城市 varchar(10),
  邮编 varchar(10)
)  

插入@T 值
(1, '亚历克斯', 32, '迈阿密', NULL),
(2,空,24,空,空)

;使用 xmlnamespaces('http://www.w3.org/2001/XMLSchema-instance' 作为 ns)
选择身份证,
       (
          选择 *
          从@T 作为 T2
          其中 T1.ID = T2.ID
          对于 xml 路径('row'),元素 xsinil,类型
       ).value('count(/row/*[@ns:nil = "true"])', 'int') as NullCount
从@T 作为 T1
于 2013-07-12T14:20:56.630 回答