Suchen von Zeichenfolgen in allen Tabellen einer SQL Server-Datenbank
Diese Anleitung zeigt eine Methode zum Suchen nach einer bestimmten Zeichenfolge (z. B. „John“) in allen Tabellen einer SQL Server-Datenbank. Wir verwenden eine Tabellenvariable und eine Ad-hoc-Abfrage, eine Technik, die für Umgebungen mit Einschränkungen für temporäre Tabellen oder gespeicherte Prozeduren geeignet ist. Beachten Sie, dass dieser Ansatz erfordert, dass Ihre SQL Server-Instanz Tabellenvariablen unterstützt. Die USE
-Anweisung beschränkt die Suche auf eine bestimmte Datenbank.
<code class="language-sql">USE DATABASE_NAME DECLARE @SearchStr nvarchar(100) = 'john' DECLARE @Results TABLE (ColumnName nvarchar(370), ColumnValue nvarchar(3630)) SET NOCOUNT ON DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110) SET @TableName = '' SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''') WHILE @TableName IS NOT NULL BEGIN SET @ColumnName = '' SET @TableName = ( SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName AND OBJECTPROPERTY( OBJECT_ID( QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) ), 'IsMSShipped' ) = 0 ) WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL) BEGIN SET @ColumnName = ( SELECT MIN(QUOTENAME(COLUMN_NAME)) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2) AND TABLE_NAME = PARSENAME(@TableName, 1) AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar', 'int', 'decimal') AND QUOTENAME(COLUMN_NAME) > @ColumnName ) IF @ColumnName IS NOT NULL BEGIN INSERT INTO @Results EXEC ( 'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) FROM ' + @TableName + ' (NOLOCK) ' + ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2 ) END END END SELECT ColumnName, ColumnValue FROM @Results</code>
Beim Ausführen dieser Abfrage wird eine Liste von Tabellen und Zeilen zurückgegeben, die die Suchzeichenfolge enthalten.
Das obige ist der detaillierte Inhalt vonWie kann man effizient nach Zeichenfolgen in allen Tabellen einer SQL Server-Datenbank suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!