查询在PHP

时间:2016-11-17 23:33:19

标签: php sql-server

我正在处理一个糟糕的大型数据库,其中包含大量未使用的字段和列,其中每个数据都为NULL。有没有办法只检索带有查询的表的填充列?我无法访问SQL Server Studio,但通过PHP

1 个答案:

答案 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);