Heim > Datenbank > MySQL-Tutorial > Wie finde ich einen bestimmten Wert in allen Tabellen und Spalten einer Oracle-Datenbank?

Wie finde ich einen bestimmten Wert in allen Tabellen und Spalten einer Oracle-Datenbank?

Linda Hamilton
Freigeben: 2025-01-22 12:52:10
Original
312 Leute haben es durchsucht

How to Find a Specific Value Across All Tables and Columns in an Oracle Database?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage