Wie finde ich eine Zeichenfolge in einer ganzen Datenbank?
Habe ich eine bestimmte Zeichenfolge, wie etwa "123abcd" zum Beispiel, aber ich weiß nicht, der name der Tabelle oder sogar den Namen der Spalte in die Tabelle auf meinem SQL Server-Datenbank. Ich möchte um es zu finden mit wählen Sie und zeigen Sie alle Spalten der zugehörigen Zeichenfolge, so Frage ich mich, so etwas wie:
select * from Database.dbo.* where * like '%123abcd%'
Aus offensichtlichen Gründen ist es doens T Arbeit, aber es gibt einen einfachen Weg, um erstellen Sie eine select-Anweisung, so etwas zu tun?
InformationsquelleAutor der Frage Diogo | 2011-12-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies funktionieren wird:
Ein paar Vorbehalte, though. Erste, das ist unverschämt langsam und nicht optimierte. Alle Werte werden konvertiert, um
nvarchar
einfach, so dass Sie verglichen werden können, ohne Fehler. Sie können Probleme mit Werten wiedatetime
nicht konvertieren wie erwartet und daher nicht abgestimmt, wenn Sie sein sollten (false negative).Den
WHERE (0 = 1)
gibt es, um Gebäude, dieOR
- Klausel zu erleichtern. Wenn es nicht übereinstimmt, den Sie nicht bekommen keine Zeilen zurück.InformationsquelleAutor der Antwort Yuck
Hier sind ein paar Kostenlose tools, die HIERFÜR genutzt werden können. Beide arbeiten als SSMS-add-ins.
ApexSQL Search – 100% kostenlos - Suche sowohl das schema und die Daten in den Tabellen. Hat noch einige weitere nützliche Optionen, wie z.B. dependency-tracking...
SSMS Tools pack – kostenlos für alle Versionen mit Ausnahme von SQL 2012 – sieht nicht so Fortgeschritten, wie vorige, aber hat eine Menge andere Coole features.
InformationsquelleAutor der Antwort John Moore
Ich glaube, Sie haben zwei Möglichkeiten:
Bauen Sie eine dynamische SQL-Anweisungen mit
sys.tables
undsys.columns
um die Suche durchzuführen (Beispiel hier).Beliebiges Programm verwenden, das diese Funktion haben. Ein Beispiel HIERFÜR ist SQL Workbench (kostenlos).
InformationsquelleAutor der Antwort DavidEG
InformationsquelleAutor der Antwort Neeraj Kumar Yadav
In oracle können Sie mithilfe der folgenden sql-Befehl zum erzeugen der sql-Befehle, die Sie benötigen:
InformationsquelleAutor der Antwort Raihan
SQL-Locator (frei) gearbeitet hat ideal für mich. Es kommt mit einer Menge von Optionen, und es ist ziemlich einfach zu verwenden.
InformationsquelleAutor der Antwort Gabe
Normalerweise verwende ich
information_Schema.columns
undinformation_schema.tables
obwohl, wie @igitt gesagt,sys.tables
undsys.columns
kürzer zu geben.In einer Schleife, verketten Sie diese
Führen Sie dann die resultierende sql.
InformationsquelleAutor der Antwort MatthewMartin
Gemeinsame Ressource Grep (crgrep) wird die Suche nach einer Zeichenkette entspricht, die in Tabellen/Spalten nach name oder Inhalt und unterstützt eine Vielzahl von Datenbanken, einschließlich SQL Server, Oracle und andere. Voller wild-Krempel und andere nützliche Optionen.
Es ist opensource (ich bin der Autor).
http://sourceforge.net/projects/crgrep/
InformationsquelleAutor der Antwort Craig
Sorry für die späte Antwort, aber ich musste einfach diese Frage, wie gut und landete Lösung mit einem anderen Ansatz, der wahrscheinlich mehr Generika für alle Datenbanken.
InformationsquelleAutor der Antwort meowcat
Hier ist eine cursor-basierte Lösung
InformationsquelleAutor der Antwort Noor A Shuvo