sql >> Database >  >> RDS >> Sqlserver

Vind velden die niet worden gebruikt (hebben allemaal nulls)

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 kolommen die uit 0 komen, hebben allemaal nulls (tenzij de kolom Total_Count ook uit 0 komt, in welk geval de tabel leeg is). Merk op dat deze zoekopdracht behoorlijk duur zal zijn op een grote tafel.



  1. mysql | Verzoek uit lege kolom en FIND_IN_SET

  2. Een datamodel van een bureau voor de publieke opinie

  3. Postgres op hoog niveau van INSERT/UPDATE-snelheid?

  4. Zoek uit of de REPLACE-instructie is vervangen of zojuist is ingevoegd in MySQL