Comment vérifier qu'une colonne existe dans une table SQL Server ?

Pour récupérer un nom de colonne, il faut interroger la table sys.columns qui contient la liste de toutes les colonnes existantes.

Dans le langage SQL, une requête produit une erreur si une des colonnes demandées n'existe pas. Il est donc important dans un script SQL de vérifier l'existence d'une colonne avant d'utiliser une requête.

Pour le système de gestion de base de données SQL Server, à partir de la version 2005, il existe la clause exists qui vérifie si la sous requête passée en paramètre retourne ou non des lignes.

Pour récupérer le nom de la colonne, il faut interroger la table sys.columns qui contient la liste de toutes les colonnes existantes dans toutes les vues et tables de la base. Il faut être sûr d'avoir accès à la table avant d'effectuer la requête sinon la colonne ne sera pas trouvée.

if exists(select * from sys.columns 
 where Name = N'nomDeLaColonne' and Object_ID = Object_ID(N'nomDeLaTable'))
begin
 -- La colonne existe
end

Une autre solution plus courte consiste à utiliser la fonction COL_LENGTH. Cette fonction retourne la longueur d'une colonne. Si la colonne n'existe pas ou que vous ne pouvez pas voir la table contenant la colonne, cette méthode retournera le résultat NULL.

IF COL_LENGTH('nomDeLaTable','nomDeLaColonne') IS NULL
BEGIN
/*La colonne n'existe pas ou vous ne possédez pas les droits pour voir la table*/
END

SQL