Sql server 2008 如何在SQLServer2008中获取列值为null的列名

Sql server 2008 如何在SQLServer2008中获取列值为null的列名,sql-server-2008,columnname,Sql Server 2008,Columnname,问题: 对于给定的表,我需要一个SQL(SQLServer2008查询),它可以获取列值为NULL的所有列名 非常感谢您的帮助。以下内容应该可以使用,它是按数据库、架构和表筛选的。当列的任何一行中存在NULL值时,它会检索列名(但这只是一个小问题,您可以在@sql变量中包含的查询中通过更改exists/NOT exists条件来处理和设置它): 如果您想从满足给定条件的特定模式中获取所有表的所有列,您甚至不必指定表名,只需加入sys.schemas。这将为您提供指定架构上所有表中所有列的列表,这

问题:

对于给定的表,我需要一个SQL(SQLServer2008查询),它可以获取列值为NULL的所有列名


非常感谢您的帮助。

以下内容应该可以使用,它是按数据库、架构和表筛选的。当列的任何一行中存在
NULL
值时,它会检索列名(但这只是一个小问题,您可以在
@sql
变量中包含的查询中通过更改
exists
/
NOT exists
条件来处理和设置它):

如果您想从满足给定条件的特定模式中获取所有表的所有列,您甚至不必指定表名,只需加入
sys.schemas
。这将为您提供指定架构上所有表中所有列的列表,这些列在任何行中都包含
NULL
,只需将第一个查询更改为:

SELECT  @dbname dbname
        ,t.name tbl
        ,c.name col
INTO    #temp
FROM    sys.columns c
JOIN    sys.tables t ON 
        t.object_id = c.object_id
JOIN    sys.schemas s ON 
        s.schema_id = t.schema_id
WHERE   c.is_nullable = 1
AND     s.name =@schemaName

列名是否为空?我假设您希望返回记录为null的所有列?该列的任何值或该列的所有值是否为null?或者另一种选择是,您希望知道可以接受null的所有列。你需要编辑你的问题,更清楚地知道你到底想找什么。很好,不客气,如果你发现答案最有用,你可以把它标记为正确。
SELECT  @dbname dbname
        ,t.name tbl
        ,c.name col
INTO    #temp
FROM    sys.columns c
JOIN    sys.tables t ON 
        t.object_id = c.object_id
JOIN    sys.schemas s ON 
        s.schema_id = t.schema_id
WHERE   c.is_nullable = 1
AND     s.name =@schemaName