Suchen Sie nach bestimmten Werten in einer beliebigen Tabelle und Spalte in der Oracle-Datenbank
Sie müssen einen bestimmten Wert in einer großen Anzahl von Tabellen und Feldern in einer Oracle-Datenbank finden. Obwohl Sie nur begrenzte Kenntnisse über die Herkunft der Daten haben, bleibt der Wert „22.01.2008P09RR8“ unverändert.
Kandidatenspalten finden
Obwohl bei Ihrer ersten Abfrage versucht wurde, Kandidatenspalten anhand des erwarteten Namensmusters „%DTN%“ zu identifizieren, war dies nicht erfolgreich. Stattdessen bietet die folgende Abfrage eine genauere Suche:
<code class="language-sql">SELECT owner, table_name, column_name FROM all_tab_columns WHERE column_name LIKE '%DTN%';</code>
Wenn „DTN“ jedoch nur eine Spekulation ist, führt dieser Ansatz möglicherweise nicht zu den erwarteten Ergebnissen.
Alle Spalten durchsuchen
Angenommen, der Wert ist tatsächlich in einer Spalte gespeichert, können Sie jede Spalte in jeder Tabelle systematisch durchsuchen, indem Sie Folgendes verwenden:
Methode 1: Dynamisches SQL
Mit PL/SQL und Dynamic SQL können Sie SQL-Abfragen zur Laufzeit generieren und ausführen. Dies wird durch den folgenden Codeausschnitt erreicht:
<code class="language-sql">SET SERVEROUTPUT ON SIZE 100000 DECLARE match_count INTEGER; BEGIN FOR t IN (SELECT owner, table_name, column_name FROM all_tab_columns WHERE owner != 'SYS' and data_type LIKE '%CHAR%') LOOP EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM ' || t.owner || '.' || t.table_name || ' WHERE '||t.column_name||' = :1' INTO match_count USING '1/22/2008P09RR8'; IF match_count > 0 THEN dbms_output.put_line( t.table_name ||' '||t.column_name||' '||match_count ); END IF; END LOOP; END; /</code>
Methode 2: Skriptabfrage
Alternativ können Sie für jede Spalte in jeder Tabelle separate SQL-Abfragen generieren. Für eine Tabelle mit dem Namen „Tabelle1“ würde die Abfrage beispielsweise wie folgt aussehen:
<code class="language-sql">SELECT * FROM table1 WHERE column1 = 'value' OR column2 = 'value' OR column3 = 'value' ... ;</code>
Mit diesen Methoden können Sie den riesigen Bereich der Oracle-Datenbank sorgfältig nach dem schwer fassbaren Wert „1/22/2008P09RR8“ durchsuchen.
Das obige ist der detaillierte Inhalt vonWie finde ich einen bestimmten Wert in allen Tabellen und Spalten einer Oracle-Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!