sql >> Databáze >  >> RDS >> Sqlserver

Najít pole, která se nepoužívají (mají všechny hodnoty null)

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;

Všechny sloupce, které vyjdou 0, mají všechny hodnoty null (pokud sloupec Total_Count také nevyjde 0, v takovém případě je tabulka prázdná). Všimněte si, že tento dotaz bude na velkém stole pěkně drahý.



  1. Nastavení connectionPool padá Slick 3.0

  2. Jak mohu provést tuto dynamickou aktualizaci v Oracle?

  3. Struktura databáze pro uchovávání statistik podle dne, týdne, měsíce, roku

  4. Jak nainstalovat SQL Server na SUSE 12