Sql server 2008 如何在SQLServer2008中获取列值为null的列名
问题: 对于给定的表,我需要一个SQL(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。这将为您提供指定架构上所有表中所有列的列表,这
非常感谢您的帮助。以下内容应该可以使用,它是按数据库、架构和表筛选的。当列的任何一行中存在
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