我正在处理一个糟糕的大型数据库,其中包含大量未使用的字段和列,其中每个数据都为NULL。有没有办法只检索带有查询的表的填充列?我无法访问SQL Server Studio,但通过PHP
答案 0 :(得分:0)
查看Select * From INFORMATION_SCHEMA.COLUMNS
由此,您可以创建一些动态SQL来列出所有值为空的表名和字段名
Declare @SQL varchar(max) = '>>>'
Select @SQL=@SQL+'Union All Select TableName=''['+Table_Schema+'].['+Table_Name+']'',FieldName='''+Column_Name+''' From ['+Table_Schema+'].['+Table_Name+'] having max(['+Column_Name+']) is null'+char(13)
From INFORMATION_SCHEMA.COLUMNS
Set @SQL = Replace(@SQL,'>>>Union All','')
Exec(@SQL)
我应该添加@scsimon有效的问题/问题
我没有一个表,整个列都是null,所以我创建了dbo.temp,包含3条记录和3个字段。只有字段aaa完全为空。
上面的动态sql返回
TableName FieldName
[dbo].[temp] aaa
一行
Declare @SQL varchar(max) = '>>>';Select @SQL=@SQL+'Union All Select TableName=''['+Table_Schema+'].['+Table_Name+']'',FieldName='''+Column_Name+''' From ['+Table_Schema+'].['+Table_Name+'] having max(['+Column_Name+']) is null'+char(13) From INFORMATION_SCHEMA.COLUMNS;Set @SQL = Replace(@SQL,'>>>Union All','');Exec(@SQL);