1621 votes

SQL Server 2008 : trouver toutes les tables contenant des colonnes avec le nom spécifié

Est-il possible que je peux requêtes pour les noms de toutes les tables qui contiennent de la colonne avec le nom de

Like %myName%

2490voto

AdaTheDev Points 53358
SELECT c.name AS ColName, t.name AS TableName
FROM sys.columns c
    JOIN sys.tables t ON c.object_id = t.object_id
WHERE c.name LIKE '%MyName%'

Ou...

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

487voto

On peut aussi utiliser la syntaxe suivante:-

select * from INFORMATION_SCHEMA.COLUMNS 
where COLUMN_NAME like '%clientid%' 
order by TABLE_NAME

116voto

Francis Rodgers Points 908
select  
        s.[name]            'Schema',
        t.[name]            'Table',
        c.[name]            'Column',
        d.[name]            'Data Type',
        d.[max_length]      'Max Length',
        d.[precision]       'Precision',
        c.[is_identity]     'Is Id',
        c.[is_nullable]     'Is Nullable',
        c.[is_computed]     'Is Computed',
        d.[is_user_defined] 'Is UserDefined',
        t.[modify_date]     'Date Modified',
        t.[create_date]     'Date created'
from        sys.schemas s
inner join  sys.tables  t
on s.schema_id = t.schema_id
inner join  sys.columns c
on t.object_id = c.object_id
inner join  sys.types   d
on c.user_type_id = d.user_type_id
where c.name like '%ColumnName%'

Ici vous donnera un peu plus d'informations sur le schéma, les tables et les colonnes que vous pouvez ou non choisir d'utiliser des conditions supplémentaires dans votre clause where pour filtrer. Par exemple, si vous souhaitez uniquement voir les champs qui doivent avoir des valeurs ajouter

and c.is_nullable = 0

Vous pouvez ajouter d'autres conditions, j'ai également ajouté les colonnes de la clause select dans cette verticale de sorte qu'il était facile de réorganiser, supprimer, renommer, ou en ajouter d'autres en fonction de vos besoins. Alternativement, vous pouvez rechercher juste tables à l'aide de T. Nom. Son très personnalisable.

Profitez de.

63voto

Dwoolk Points 538

Si vous êtes de plus en plus dans des outils de tiers, il ya beaucoup d'options là-bas comme ApexSQL de Recherche, SSMS Utilitaire ou Rouge Porte-outils.

Ceux-ci viennent dans très maniable si votre base de données contient les objets chiffrés (les vues, les procédures, fonctions) parce que vous ne pouvez pas facilement rechercher à l'aide des tables du système.

56voto

user3583912 Points 95

Je ne sais pas pourquoi beaucoup d'entre vous suggère de Rejoindre sys.table with sys.columns vous pouvez tout simplement utiliser de code ci-dessous:

Select object_name(object_id) as TableName,* from SYS.columns where name LIKE '%MyName%'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X