Ist es möglich, nach Tabellennamen abzufragen, die Spalten enthalten
LIKE '%myName%'
?
sql
sql-server
tsql
system-tables
Gruber
quelle
quelle
Antworten:
Suchtabellen:
Suchtabellen & Ansichten:
quelle
INFORMATION_SCHEMA
In SQL Server enthaltene frühere Ansichten entsprechen der ISO-Standarddefinition für INFORMATION_SCHEMA. ,sys.columns
,sys.tables
Ist Microsoft SQL Server spezifisch.TABLE_SCHEMA
in Ihre Auswahlliste kann hilfreich sein. Immer noch +1, weil es eine gute Antwort ist.Wir können auch die folgende Syntax verwenden: -
quelle
INFORMATION_SCHEMA
die Teil des ANSI-Standards sindSQL Server:
Orakel:
Ich verwende es die ganze Zeit, um ALLE Instanzen eines Spaltennamens in einer bestimmten Datenbank (Schema) zu finden.
quelle
Hier erhalten Sie einige zusätzliche Informationen zu dem Schema, den Tabellen und Spalten, nach denen Sie möglicherweise zusätzliche Bedingungen in Ihrer where-Klausel zum Filtern verwenden oder nicht. Zum Beispiel, wenn Sie nur die Felder sehen möchten, für die Werte hinzugefügt werden müssen
Sie können auch andere Bedingungen hinzufügen. Ich habe auch die Spalten in der select-Klausel auf diese vertikale Weise hinzugefügt, sodass es einfach war, andere nach Ihren Anforderungen neu anzuordnen, zu entfernen, umzubenennen oder hinzuzufügen. Alternativ können Sie mit T.Name nur nach Tabellen suchen. Es ist sehr anpassbar.
Genießen.
quelle
Das sollte funktionieren:
quelle
sys.tables
anstelle von verwendensysobjects
(was ab SQL Server 2005 veraltet ist)Wenn Sie sich mehr für Tools von Drittanbietern interessieren, gibt es dort viele Optionen, wie zum Beispiel:
Diese sind sehr praktisch, wenn Ihre Datenbank verschlüsselte Objekte (Ansichten, Prozeduren, Funktionen) enthält, da Sie diese mithilfe von Systemtabellen nicht einfach suchen können.
quelle
Ich weiß nicht, warum so viele von Ihnen, die vorschlagen, sich Ihnen anzuschließen
sys.table with sys.columns
, einfach den folgenden Code verwenden können:Select object_name(object_id) as TableName,* from SYS.columns where name LIKE '%MyName%'
oder
Wenn Sie auch einen Schemanamen wünschen:
quelle
Wenn Sie einfach den Tabellennamen möchten, können Sie Folgendes ausführen:
Wenn Sie auch den Schemanamen möchten (was in vielen Fällen der Fall sein wird, da Sie viele verschiedene Schemas haben und wenn Sie sich nicht an jede Tabelle in der Datenbank erinnern können und wo sie hingehört, kann dies nützlich sein), führen Sie Folgendes aus:
und schließlich, wenn Sie es in einem schöneren Format haben möchten (obwohl hier der Code (meiner Meinung nach) für das einfache Schreiben zu kompliziert wird):
Beachten Sie, dass Sie auch eine Funktion erstellen können, die auf dem basiert, was ich habe:
Es ist erwähnenswert, dass die Concat-Funktion 2012 hinzugefügt wurde. Verwenden Sie für 2008r2 und frühere Versionen +, um Zeichenfolgen zu verketten.
Ich habe den Prozess ein wenig neu formatiert, seit ich dies gepostet habe. Es ist jetzt etwas fortgeschrittener, sieht aber viel unordentlicher aus (aber es ist in einem Prozess enthalten, sodass Sie es nie sehen werden) und es ist besser formatiert.
Mit dieser Version können Sie es in einer Verwaltungsdatenbank haben und dann eine beliebige Datenbank durchsuchen. Ändern Sie die Dekleration von
@db
von'master'
in die Standarddatenbank (HINWEIS: Die Verwendung der Funktion CONCAT () funktioniert nur mit 2012+, es sei denn, Sie ändern die Zeichenfolgenverkettung, um die+
Operatoren zu verwenden).quelle
Es ist von Pinal Sir Blog
quelle
quelle
Sie finden es in INFORMATION_SCHEMA.COLUMNS nach dem Spaltenspaltenfilter
quelle
quelle
Die folgende Abfrage gibt Ihnen die genauen Tabellennamen der Datenbank mit dem Feldnamen '% myName'.
quelle
Um vollständige Informationen zu erhalten: Spaltenname, Tabellenname sowie Schema der Tabelle.
quelle
Ich habe es gerade versucht und das funktioniert perfekt
Ändern Sie YourDatbaseName nur in Ihre Datenbank und YourcolumnName in Ihren Spaltennamen, den Sie für den Rest suchen. Behalten Sie ihn bei.
Hoffe das hat geholfen
quelle
quelle
Ich habe dies für den gleichen Zweck verwendet und es hat funktioniert:
quelle
Hoffentlich ist dies keine doppelte Antwort, aber ich möchte eine SQL-Anweisung innerhalb einer SQL-Anweisung generieren, mit der ich nach den gesuchten Werten suchen kann (nicht nur nach den Tabellen mit diesen Feldnamen (wie üblich) Ich muss dann alle Informationen löschen, die sich auf die ID des gesuchten Spaltennamens beziehen.
Dann kann ich meine erste Spalte "SQLToRun" kopieren und einfügen ... dann ersetze ich "Auswählen * von" durch "Löschen von" und es ermöglicht mir, alle Verweise auf diese angegebene ID zu löschen! Schreiben Sie diese Ergebnisse in eine Datei, damit Sie Habe sie nur für den Fall.
HINWEIS **** Stellen Sie sicher, dass Sie alle Bakup-Tabellen entfernen, bevor Sie Ihre Löschanweisung ausführen ...
quelle
quelle
Wie bei Orakel finden Sie hier Tabellen und Spalten:
quelle
Ich wollte etwas für Tische und Ansichten , das meine Augen nicht bluten ließ.
Abfrage
Ergebnis
quelle
Um die obigen Antworten zu verbessern, habe ich auch Ansichten aufgenommen und das Schema und die Tabelle / Ansicht zusammengefügt, um die Ergebnisse deutlicher zu machen.
quelle
Sie können diese Abfrage versuchen:
quelle
Hier ist die Antwort auf Ihre Frage
quelle
quelle
Hier ist eine funktionierende Lösung für eine Sybase-Datenbank
quelle
Wir können
sp_columns
für den Zweck verwenden.quelle
SQL-Abfrage zum Anzeigen aller Tabellen mit angegebenem Spaltennamen:
quelle