Suche nach einer Zeichenfolge in einem Datenbanklabyrinth: Ein SQL Server-Abenteuer
Das Navigieren in einer weitläufigen Datenbank kann entmutigend sein, insbesondere wenn Sie es sind versuchen, die Quelle bestimmter Daten zu finden. SQL Server 2005 bietet eine robuste Lösung für diese Herausforderung: eine umfassende Suche über alle Tabellen, Zeilen und Spalten hinweg.
Um mit dieser Suche zu beginnen, vertiefen wir uns in den bereitgestellten Code:
DECLARE @search_string VARCHAR(100), @table_name SYSNAME, @table_schema SYSNAME, @column_name SYSNAME, @sql_string VARCHAR(2000)
Wir beginnen mit der Deklaration von Variablen zum Speichern der Suchzeichenfolge, Tabelleninformationen und SQL-Abfragen.
SET @search_string = 'Test'
Als nächstes definieren wir Cursor für Über Tabellen und Spalten iterieren:
DECLARE tables_cur CURSOR FOR SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' DECLARE columns_cur CURSOR FOR SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = @table_schema AND TABLE_NAME = @table_name AND COLLATION_NAME IS NOT NULL
Wir beschränken die Suche auf Basistabellen und konzentrieren uns auf Spalten mit Nicht-Null-Sortierungen, da diese nur bei Zeichenfolgen vorhanden sind.
Die Hauptschleife iteriert über Tabellen und Spalten:
OPEN tables_cur FETCH NEXT FROM tables_cur INTO @table_schema, @table_name WHILE (@@FETCH_STATUS = 0) BEGIN OPEN columns_cur FETCH NEXT FROM columns_cur INTO @column_name WHILE (@@FETCH_STATUS = 0) BEGIN SET @sql_string = 'IF EXISTS (SELECT * FROM ' + QUOTENAME(@table_schema) + '.' + QUOTENAME(@table_name) + ' WHERE ' + QUOTENAME(@column_name) + ' LIKE ''%' + @search_string + '%'') PRINT ''' + QUOTENAME(@table_schema) + '.' + QUOTENAME(@table_name) + ', ' + QUOTENAME(@column_name) + '''' EXECUTE(@sql_string) FETCH NEXT FROM columns_cur INTO @column_name END CLOSE columns_cur DEALLOCATE columns_cur FETCH NEXT FROM tables_cur INTO @table_schema, @table_name END CLOSE tables_cur DEALLOCATE tables_cur
Für jede Tabellen-Spalten-Kombination wird eine SQL-Abfrage erstellt, die nach der bereitgestellten Zeichenfolge sucht und diese ausgibt Ergebnis.
Vorbehalte:
Dieser Ansatz ist zwar effektiv, hat aber auch Nachteile:
Alternativer Ansatz:
Eine weitere Möglichkeit zur Suche in großen Datenbanken ist die Nutzung der Volltextsuche (FTS). FTS wurde für diesen Zweck entwickelt und kann viel schneller sein als der obige Code. Allerdings muss die Datenbank für FTS konfiguriert sein.
Das obige ist der detaillierte Inhalt vonWie kann ich effizient in allen Tabellen und Spalten einer SQL Server-Datenbank nach einer Zeichenfolge suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!