Comment trouver les colonnes qui n'ont pas de données (toutes les valeurs sont NULL)?
J'ai plusieurs tables dans une base de données. Je voudrais trouver les colonnes (dans les tables) n'ont pas de valeurs (toutes les NULL dans une colonne). J'ai l'exemple ci-dessous, le résultat devrait être
TestTable1 --> Var2
TestTable2 --> Variable1
Je n'ai aucune idée de comment créer ce genre de requête. Votre aide est la plus appréciée!
--create first table
create table dbo.TestTable1 (
sur_id int identity(1,1) not null primary key,
var1 int null,
var2 int null
)
go
--insert some values
insert into dbo.TestTable1 (var1)
select 1 union all select 2 union all select 3
--create second table
create table dbo.TestTable2 (
sur_id int identity(1,1) not null primary key,
variable1 int null,
variable2 int null
)
--and insert some values
insert into dbo.TestTable2 (variable2)
select 1 union all select 2 union all select 3
source d'informationauteur jrara
Vous devez vous connecter pour publier un commentaire.
Pour une seule colonne,
count(ColumnName)
retourne le nombre de lignes oùColumName
n'est pas nulle:Vous pouvez générer une requête pour toutes les colonnes. Par Martin suggestion, vous pouvez exclure des colonnes qui ne peut pas être null avec
is_nullable = 1
. Par exemple:Si le nombre de tables est grande, vous pouvez générer une requête pour toutes les tables dans une semblable manière. La liste de toutes les tables est en
sys.tables
.Voici un script que j'ai écrit pour faire la même chose, c'est une étape de deux processus manuel:
UNION ALL
déclaration. Il ressemblera à ceci:C'est trop utile de ne pas être mis en pratique un peu le système de proc - surtout si vous venez d'hériter d'une base de données existante, et que vous vous demandez quelles colonnes vous pouvez les déposer ou de les ignorer.