Is there a quick way to check if ANY column is NULL?

后端 未结 4 1443
清歌不尽
清歌不尽 2020-12-06 17:15

I have a table with around 20 columns. Aside from typing out:

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

Is there

相关标签:
4条回答
  • 2020-12-06 17:43

    That depends on what quicker means.

    If you mean quicker for SQL Server to execute, one thing you could do is write a trigger than updates a bit column that specifies if the entire row (other than the bit and primary key) are NULL. But, there should be a REAL good reason for this as it will impact your update performance. Indexes on those columns would help as well.

    If you mean quicker to write, you could have SQL generate the where clause for you. But, unless you do this alot, it isn't worth the time in my opinion.

    0 讨论(0)
  • 2020-12-06 17:48

    You can find the column names using something like this:

    SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = <table_name> 
    

    Then, I would write a procedure using this, and that would loop through the entries in your table and the column names.

    Source: http://codesnippets.joyent.com/posts/show/337

    0 讨论(0)
  • 2020-12-06 17:51

    No. There are ways to code it quicker, but there are no shortcuts like you imply. Taken from an answer I gave on dba.stackexchange:

    DECLARE @tb NVARCHAR(255), @sql NVARCHAR(MAX);
    
    SET @tb = N'dbo.[table]';
    
    SET @sql = N'SELECT * FROM ' + @tb + ' WHERE 1 = 0';
    
    SELECT @sql = @sql + N' OR ' + QUOTENAME(name) + ' IS NULL'
        FROM sys.columns 
        WHERE [object_id] = OBJECT_ID(@tb);
    
    EXEC sp_executesql @sql;
    
    0 讨论(0)
  • 2020-12-06 17:53

    Teaching-to-fish-instead-of-giving-you-the-fish kind of answer here:

    One way of doing it is by creating a Stored Procedure that assembles and runs a dynamic query.

    The Stored procedure will:

    • have a Table name as input parameter.
    • query the meta data system tables for the specific table structure.
    • dynamically assemble a string (the actual query) with the OR statements for that table's columns.
    • run the assembled query and return the result.
    0 讨论(0)
提交回复
热议问题