Trouver toutes les tables contenant des colonnes dont le nom est spécifié - MS SQL Server
Est-il possible d'effectuer des requêtes pour les noms de tables qui contiennent des colonnes de
LIKE '%myName%'
?
- Il y a une étonnante plug-in pour sql server qui peut rechercher tous les types d'objet. recherche sql red-gate.com/products/sql-development/sql-search
- sql-la recherche est grand en effet, mais comme beaucoup d'outils, il ne fonctionne pas avec SQL Server 2000 (oui, je suis coincé avec ce pour le moment :-/ )
- ApexSQL recherche de SSMS offre encore plus de
Vous devez vous connecter pour publier un commentaire.
Recherche De Tables:
Recherche de Tables & Vues:
sys.columns
,sys.tables
est Microsoft Sql Server spécifique.TABLE_SCHEMA
dans votre liste de sélection peut être utile. Encore +1 parce que c'est une bonne réponse.UPPER()
à faire de la recherche insensible à la casse.SELECT COLUMN_NAME AS 'ColumnName' ,TABLE_NAME AS 'TableName' FROM INFORMATION_SCHEMA.COLUMNS WHERE UPPER(COLUMN_NAME) LIKE UPPER('%MyName%') ORDER BY TableName ,ColumnName;
On peut aussi utiliser la syntaxe suivante:-
INFORMATION_SCHEMA
fait partie de la la Norme ANSISQL Server:
Oracle:
Je l'utilise TOUT le temps pour trouver TOUTES les occurrences d'un nom de colonne dans une base de données (schéma).
Cela devrait fonctionner:
sys.tables
au lieu desysobjects
(qui est obsolète depuis SQL Server 2005)Si vous êtes de plus en plus dans des outils de tiers, il y a beaucoup d'options telles que:
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.
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
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.
Profiter.
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%'
ou
Si vous voulez le nom du schéma ainsi:
Si vous voulez simplement le nom de la table, vous pouvez exécuter:
Si vous voulez le Nom de Schéma (ce qui dans beaucoup de cas, vous aurez, comme vous l'aurez beaucoup de différents schémas, et à moins que vous pouvez vous souvenir de chaque table de la base de données et où il appartient, cela peut être utile) exécuter:
et enfin si vous le voulez dans un format plus agréable (bien que c'est là que le code (À mon avis) est trop compliqué pour une écriture facile):
remarque vous pouvez également créer une fonction sur la base de ce que j'ai:
Il est intéressant de noter que la méthode concat fonctionnalité a été ajoutée en 2012. Pour 2008r2 et l'utilisation antérieure + pour concaténer des chaînes.
J'ai re-formaté le proc un peu depuis que j'ai posté ce. C'est un peu plus avancé maintenant, mais ressemble beaucoup messier (mais il est dans une proc de sorte que vous n'aurez jamais le voir) et elle est formatée mieux.
Cette version permet de l'avoir dans une base de données administrative, puis rechercher dans une base de données. Modifier la decleration de
@db
de'master'
à selon ce que vous voulez que la base de données par défaut de l'être (REMARQUE: l'utilisation de la méthode CONCAT() fonctionnera seulement avec 2012+, sauf si vous modifiez la concaténation de chaîne à utiliser le+
opérateurs).C'est à partir de Pinal Sir Blog
Vous pouvez trouver à partir de INFORMATION_SCHEMA.Les COLONNES en column_name filtre
Requête suivante vous donnera l'noms des tables de la base de données ayant un nom de champ like '%myName.
D'obtenir des informations complètes: nom de colonne, le nom de la table ainsi que le schéma de la table..
j'ai juste essayé et cela fonctionne parfaitement
Seul changement YourDatbaseName à votre base de données et YourcolumnName à votre nom de la colonne que vous êtes à la recherche pour le reste, gardez-le comme il est.
Espère que cela a aidé
J'ai utilisé ce pour le même but, et il a travaillé:
J'espère que ce n'est pas un double de la réponse, mais ce que j'aime à faire est de générer une instruction sql à l'intérieur d'une instruction sql qui me permettra de rechercher les valeurs que je cherche (pas seulement les tableaux avec les noms de champs ( comme il est généralement nécessaire pour moi de puis supprimer toutes les informations relatives à l'id de la colonne nom, je suis à la recherche d'):
Alors je peux copier et coller exécuter ma 1ère colonne "SQLToRun"... puis-je remplacer le "Select * from' avec 'Delete from' et cela me permet de supprimer toutes les références à cette ID! Écrire ces résultats dans un fichier pour les avoir juste au cas où.
*** REMARQUE* assurez-vous d'éliminer toute bakup tables avant l'exécution de votre instruction delete...
Comme oracle, vous pouvez trouver des tables et des colonnes avec ceci:
Vous pouvez essayer cette requête:
Juste pour améliorer les réponses ci-dessus j'ai inclus les points de Vue et Concaténés du Schéma et de la Table/Vue ensemble, rendant les Résultats plus visibles.
Voici une solution qui fonctionne pour une base de données Sybase