SQL : rechercher toutes les tables contenant une colonne avec un nom particulier

SQL : rechercher toutes les tables contenant une colonne avec un nom particulier

Des requêtes dans des tables permettent de chercher des données sur n'importe quelle structure de votre base de données.

Le système de base de données SQL Server contient dans des tables spéciales les données composant la structure de votre base : tables, colonnes, vues... Il est possible d'effectuer des requêtes dans ces tables pour chercher des données sur n'importe quelle structure de votre base de données. Vous pouvez donc chercher des colonnes avec un nom particulier.

Si votre recherche porte uniquement sur des tables, les données des colonnes sont stockées dans la table sys.colums. La colonne name contient le nom de la colonne. Pour connaître le nom de la table qui contient la colonne, il faut faire une jointure avec la table sys.tables. La colonne object_id, présente dans les deux tables, relie une table à ses colonnes.

SELECT c.name AS nomColonne, t.name AS nomTable
FROM sys.columns c
 JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%nomDeLaColonne%'

Si vous souhaitez rechercher à la fois dans les colonnes et dans les vues, il existe le schéma INFORMATION_SCHEMA.COLUMNS. Il regroupe toutes les données des colonnes pour les vues et les tables d'une base de données. La colonne COLUMN_NAME contient le nom de la colonne, TABLE_NAME le nom de la table.

SELECT COLUMN_NAME, TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE '%nomDeLaColonne%'

SQL