2
A
回答
1
以下應該工作,它被數據庫,模式和表過濾。當列中任何一行存在NULL
值時,它會檢索列名稱(但這只是一個次要考慮因素,您可以通過更改EXISTS
/NOT EXISTS
條件以任意方式將其設置爲包含在@sql
變量中的查詢):
DECLARE @dbname VARCHAR(100) = 'yourDB'
DECLARE @schemaName VARCHAR(100) = 'yourSchema'
DECLARE @tableName VARCHAR(100) = 'yourTable'
DECLARE @result TABLE (col VARCHAR(4000))
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
WHERE c.is_nullable = 1
AND t.name = @tableName
DECLARE @sql NVARCHAR(MAX) =
STUFF(
(
SELECT 'UNION ALL SELECT CASE WHEN EXISTS (SELECT 1 FROM ' + @dbname + '.' + @schemaName + '.' + tbl + ' WHERE ' + col + ' IS NULL) THEN '''+ @schemaName + '.' + tbl + '.' + col+''' END AS NULL_Value_Exists '
FROM #temp
FOR XML PATH('')
), 1, 10, ' ')
INSERT @result
EXEC(@sql)
SELECT *
FROM @result
WHERE col IS NOT NULL
DROP TABLE #temp
如果你想獲得的所有表的所有列從某一個模式滿足給你甚至不必指定表名的條件和您只需加入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 [email protected]
+0
謝謝!這一直奏效! –
+0
太好了,不客氣,如果您發現最有用的答案,您可以將其標記爲正確。 –
相關問題
- 1. SQL Server 2008 - 如何獲得列名和值在一起?
- 2. 更改SQL Server 2008中的列名稱
- 3. 如果值爲null獲得前值的SQL Server 2008
- 4. 從SQL Server表中獲取所有不爲NULL的列名稱
- 5. Sql Server 2008有列顯示名稱嗎?
- 6. SQL Server 2008:創建動態列名稱
- 7. 在SQL Server 2008中動態捕獲更改的列名稱
- 8. SQL Server 2008 R2 - 如何重命名多列名稱?
- 9. SQL Server 2008 R2:使用列值連接別名名稱
- 10. 如何在SQL Server 2008中使用ISNULL到所有列名稱?
- 11. sql server 2008打印列名
- 12. 重命名sql server 2008中的列名稱
- 13. 在SQL Server中獲得來自多個值(列)多行2008 R2
- 14. SQL Server 2008:NULL索引值
- 15. SQL Server 2008中 - 不明確的列名
- 16. 如何將行值轉換爲SQL Server 2008中的列標題?
- 17. 如何獲得使用Linq to SQL的列名稱列表
- 18. 打印NULL值列名稱
- 19. SQL Server:是列值爲空從另一個表中獲得列
- 20. 如何排除sql server 2008中的列
- 21. 獲取SQL Server 2008中的列狀態
- 22. 拆分表列SQL Server 2008中的值?
- 23. 從SQL Server獲取列名稱
- 24. 在SQL Server中如何獲得更新的列名
- 25. sql server:獲得列的默認值
- 26. 如何在sql server 2008中將行值轉換爲列?
- 27. 如何在sql server 2008中按月份獲取月份名稱?
- 28. SQL Server變量列名稱?
- 29. 取得與該列的SQL Server 2008
- 30. SQL Server 2008 - 名稱爲「程序」保留?
列名是空的?我假設你想要返回記錄爲空的所有列? –
列的任何值或該列的所有值是否應爲空? –
或者另一種選擇是你想知道所有可以接受*空值的列。你需要編輯你的問題,並更清楚你實際試圖找到什麼。 –