sql >> Databasteknik >  >> RDS >> Sqlserver

Hitta fält som inte används (har alla nollor)

DECLARE @table NVARCHAR(512);
SET @table = N'dbo.tablename';

DECLARE @sql NVARCHAR(MAX);

SELECT @sql = N'';

SELECT @sql = @sql + QUOTENAME(name) 
     + ' = SUM(CASE WHEN ' + QUOTENAME(name) + ' IS NULL THEN 1 ELSE 0 END),'
  FROM sys.columns
  WHERE object_id = OBJECT_ID(@table)
  AND is_nullable = 1;

SELECT @sql = 'SELECT ' + @sql + ' Total_Count = COUNT(*)
  FROM ' + @table + ';';

EXEC sp_executesql @sql;

Alla kolumner som kommer ut 0 har alla nollvärden (såvida inte kolumnen Total_Count också kommer ut 0, i vilket fall tabellen är tom). Observera att den här frågan kommer att bli ganska dyr på ett stort bord.



  1. Hur man skapar PDF-rapporter med PL/SQL

  2. Cronjob eller MySQL event?

  3. ska jag aktivera c3p0-satspoolning?

  4. Hur man återställer en SQL Server-databas på en Mac med SQL Operations Studio