2016-11-17 48 views
0

我正在處理一個數據量很大的大型數據庫,其中每個數據都是空的大量未使用的字段和列。有沒有什麼辦法只用查詢檢索表中的填充列?我到SQL Server Studio,但通過PHP在PHP中使用MS SQL Server查找未使用的列的查詢

沒有訪問
+0

好吧我要問,爲什麼?當你找到所有這些列時,下一步將是什麼? – scsimon

+0

我將能夠在每次交易中忽略他們,我將使用新系統 –

+0

我無法幫助您使用PHP,但SSMS是免費下載FYSA – scsimon

回答

0

Select * From INFORMATION_SCHEMA.COLUMNS

從那個偷看,你可以創建一些動態SQL列出表名稱和所有值都爲空字段名

Declare @SQL varchar(max) = '>>>' 
Select @[email protected]+'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具有有效的顧慮/問題

我沒有一個表,其中整列是空的,所以我創建dbo.temp有3條和3場。只有字段aaa完全爲空。

上述動態SQL返回

TableName  FieldName 
[dbo].[temp] aaa 

一號線

Declare @SQL varchar(max) = '>>>';Select @[email protected]+'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); 
+0

這是一個查詢,我可以在PHP中運行嗎? –