Suche alle Spalten einer Tabelle nach einem Wert?

8

Ich habe nach einer Antwort darauf gesucht, aber alles, was ich finden kann, sind Leute, die fragen, wie man alle Spalten ALLER Tabellen in einer Datenbank nach einem Wert durchsuchen soll. Ich möchte nur alle Spalten nach einer bestimmten Tabelle durchsuchen. Der Code, den die Leute für die Frage aller Tabellen entworfen haben, ist kompliziert und schwer für mich herauszufinden, wo genau eine bestimmte Tabelle gesucht wird. Kann mir jemand helfen? Danke

    
Jesse 30.06.2011, 19:11
quelle

9 Antworten

3

Verwenden Sie einfach ein Drittanbieter-Tool. Es gibt mehrere, die 100% kostenlos sind und Sie können nichts falsch machen, weil sie Ihnen eine Menge Zeit sparen.

ApexSQL-Suche (durchsucht sowohl Schema als auch Daten), SSMS Toolpack (sucht Schema und Daten, aber nicht frei für SQL Server 2012), SQL-Suche (nur Daten durchsuchen).

Ehrlich gesagt, verstehe ich nicht wirklich, warum selbst sehr erfahrene DBAs sich Mühe geben, Skripte dafür zu schreiben, wenn sie ein kostenloses Tool verwenden können, das die Aufgabe erledigt.

    
David Smithers 26.07.2013 12:55
quelle
2

Ich habe keine Ahnung von den Spaltentypen oder Datenwerten, nach denen Sie suchen, aber ich schätze, Sie versuchen, nach einem Teilstring unter mehreren Textspalten zu suchen.

Dies ist ein Job für Volltextsuche .

Verschwenden Sie keine Zeit mit LIKE '%' + @SearchStr + '%' . Sie müssen viel komplizierten Code schreiben, um es zu unterstützen, und diese Lösung wird sowieso nicht gut funktionieren.

    
Bill Karwin 30.06.2011 19:21
quelle
2

In einer ähnlichen Frage < Ich habe SQL Workbench / J erwähnt.

Der Befehl, der die Datenbank durchsucht, kann auch auf nur eine Tabelle beschränkt sein. Auch wenn diese Frage PostgreSQL-spezifisch war, funktioniert das Tool für SQL Server soweit ich weiß.

    
a_horse_with_no_name 30.06.2011 21:52
quelle
1

Hier ist eine Lösung, die, wie der Ansatz von @ Decker97, aus Metadaten ermittelt, welche Spalten für Textsuche geeignet sind. Nimmt 2005+ für die Verwendung von XML PATH sowie sys.columns, sys.tables usw. an. Unterstützt TEXT / NTEXT / CHAR / NCHAR / VARCHAR / NVARCHAR und fügt gegebenenfalls das führende N in die Suchzeichenfolge ein. Unterstützt keine XML-Spalten. Was es etwas anders macht, ist, dass es für jede Tabelle und nicht für jede einzelne Spalte ein einzelnes Resultset zurückgibt, so dass Sie nur eine Zeile pro tatsächlicher Tabellenzeile erhalten, auch wenn mehrere Spalten übereinstimmen. Wenn das Ziel ist zu verstehen, wie es funktioniert, anstatt einfach eine Lösung zu haben, wird es wahrscheinlich ein bisschen mehr als das ... vielleicht sollte ich über dieses Problem bloggen (ich sollte wahrscheinlich nicht faul sein und tatsächlich die Spaltenlisten erstellen statt Verwenden Sie einfach SELECT *).

%Vor%     
Aaron Bertrand 30.06.2011 21:19
quelle
0

Ich habe diese gespeicherte Prozedur geändert, um einen Tabellennamen als zweiten Parameter zu verwenden, und suche nur diese Tabelle nach den Daten:

%Vor%     
Decker97 30.06.2011 19:18
quelle
0

Das klingt so, als ob Sie nur wissen möchten, in welcher Tabelle und Spalte einige Daten gespeichert sind, nicht, dass Sie dies während der Ausführung Ihres Codes wissen oder ändern möchten. Ich hatte auch dieses Problem und das hat es gelöst:

Laden Sie Ihre Datenbank im SQL-Format herunter (z. B. mit phpmyadmin), öffnen Sie sie mit einem Texteditor und suchen Sie nach den gewünschten Vorkommen.

    
Sérgio 08.03.2013 19:11
quelle
0

Cutesie wenig Work-Around, dass ein bisschen mehr Eingabe ODER Excel-Clipping / Formatierung beinhaltet:

Invertieren Sie den Operator IN in einer WHERE -Klausel als VALUE IN <fields> (im Gegensatz zum häufigeren Anwendungsfall von FIELD IN <values> ).

%Vor%

Da varchar ein ziemlich formbarer Datentyp ist, wird dies ziemlich narrensicher (Sie können ISNULL / NULLIF nach Bedarf modifizieren) und kann je nach Anwendungsfall wahrscheinlich für mehr als einen Suchwert verwendet werden.

    
JJ Ward 19.07.2016 19:19
quelle
0

Ich bin auf dieses Problem gestoßen, normalerweise nach dem Hochladen von Daten aus einer CSV-Datei, wo ich die Kommas ändern musste, in Textfeldern, damit die Daten richtig geladen werden & amp; einmal in SQL Server kommt die Notwendigkeit, das geänderte Zeichen zurück zu einem Komma & amp; Es ist hilfreich, die gesamte Tabelle durchsuchen zu können. Greg Robidoux bei mssqltips hat eine Stored Procedure gepostet, die genau das tut, die Spalten einer bestimmten Tabelle nach einem bestimmten String-Wert durchsucht. Sie können es zusammen mit einem SPROC finden, der nicht den Cursor & amp; mehr Details hier:

Ссылка

Ich habe den ursprünglichen SPROC unten gepostet:

%Vor%     
Sihusir 01.09.2016 21:18
quelle
0

Ich fand die beste Antwort nur auf select * von der Tabelle und kopiere dann & amp; Einfügen in Excel und drücken Sie Strg + F

    
james5 14.03.2018 23:24
quelle

Tags und Links