Sql 是否有一种快速方法可以检查任何列是否为空?

Sql 是否有一种快速方法可以检查任何列是否为空?,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,我有一张大约有20列的桌子。除了打字外: Where column1 is null OR column2 is null OR column3 is null etc... 是否有一种更快的方法可以检查每一列,看看是否有任何值为空,如果是,则返回该记录?否。有一些方法可以更快地对其进行编码,但没有您暗示的快捷方式。摘自: 这取决于更快意味着什么 如果您的意思是SQL Server执行得更快,那么可以编写一个触发器,而不是更新一个位列,该列指定整行(位和主键除外)是否为空。但是,这应该有一个很

我有一张大约有20列的桌子。除了打字外:

Where column1 is null OR column2 is null OR column3 is null etc...

是否有一种更快的方法可以检查每一列,看看是否有任何值为空,如果是,则返回该记录?

否。有一些方法可以更快地对其进行编码,但没有您暗示的快捷方式。摘自:


这取决于更快意味着什么

如果您的意思是SQL Server执行得更快,那么可以编写一个触发器,而不是更新一个位列,该列指定整行(位和主键除外)是否为空。但是,这应该有一个很好的理由,因为它会影响您的更新性能。这些列上的索引也会有所帮助


如果您的意思是更快地编写,那么可以让SQL为您生成where子句。但是,除非你经常这样做,否则在我看来,这是不值得花时间的。

教鱼而不是在这里给你鱼的答案:

一种方法是创建一个存储过程来组装和运行动态查询

存储过程将:

  • 将表名作为输入参数
  • 查询元数据系统表以获取特定的表结构
  • 使用该表列的
    语句动态组合字符串(实际查询)
  • 运行组合查询并返回结果

您可以使用以下内容查找列名:

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = <table_name> 
从信息\u架构中选择列\u名称。表\u名称=
然后,我将使用它编写一个过程,该过程将循环遍历表中的条目和列名


来源:

写得更快还是执行得更快?在SQL Server 2005中不起作用,但希望OP知道该怎么做。@Andrey谢谢。更正。我总是抓住这个机会,有时我会错过它。在本例中,我是从2008年的一个问题复制过来的。
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = <table_name>