sql >> Database teknologi >  >> RDS >> Sqlserver

Find felter, der ikke bruges (har alle nuller)

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;

Alle kolonner, der kommer ud 0, har alle nuller (medmindre kolonnen Total_Count også kommer ud 0, i hvilket tilfælde tabellen er tom). Bemærk, at denne forespørgsel vil være ret dyr på et stort bord.



  1. Hvad er den mest passende datatype til lagring af en IP-adresse i SQL server?

  2. Returner en liste over beregnede kolonner i SQL Server

  3. Find kolonner, der kun indeholder nuller

  4. SQL-funktion meget langsom sammenlignet med forespørgsel uden funktionsindpakning