Rumah >pangkalan data >tutorial mysql >Bagaimana Mencari Nilai Khusus Merentas Semua Jadual dan Lajur dalam Pangkalan Data Oracle?

Bagaimana Mencari Nilai Khusus Merentas Semua Jadual dan Lajur dalam Pangkalan Data Oracle?

Linda Hamilton
Linda Hamiltonasal
2025-01-22 12:52:10378semak imbas

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

Cari nilai tertentu dalam mana-mana jadual dan lajur dalam pangkalan data Oracle

Anda perlu mencari nilai khusus dalam sejumlah besar jadual dan medan dalam pangkalan data Oracle. Walaupun anda mempunyai pengetahuan terhad tentang asal usul data, nilai "1/22/2008P09RR8" kekal tidak berubah.

Cari lajur calon

Walaupun pertanyaan awal anda cuba mengenal pasti lajur calon berdasarkan corak penamaan yang dijangkakan "%DTN%", ini tidak berjaya. Sebaliknya, pertanyaan berikut menyediakan carian yang lebih tepat:

<code class="language-sql">SELECT owner, table_name, column_name
FROM all_tab_columns
WHERE column_name LIKE '%DTN%';</code>

Namun, jika "DTN" hanyalah spekulasi, pendekatan ini mungkin tidak menghasilkan hasil yang diharapkan.

Cari semua lajur

Dengan mengandaikan bahawa nilai itu memang disimpan dalam lajur, anda boleh mencari secara sistematik setiap lajur dalam setiap jadual menggunakan:

Kaedah 1: SQL Dinamik

Menggunakan PL/SQL dan Dynamic SQL, anda boleh menjana dan melaksanakan pertanyaan SQL pada masa jalan. Coretan kod berikut mencapai ini:

<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>

Kaedah 2: Pertanyaan skrip

Sebagai alternatif, anda boleh menjana pertanyaan SQL yang berasingan untuk setiap lajur dalam setiap jadual. Sebagai contoh, untuk jadual bernama "table1" pertanyaan akan kelihatan seperti:

<code class="language-sql">SELECT * FROM table1
  WHERE column1 = 'value'
     OR column2 = 'value'
     OR column3 = 'value'
     ...
     ;</code>

Dengan menggunakan kaedah ini, anda boleh mencari dengan teliti ruang luas pangkalan data Oracle untuk nilai yang sukar difahami "1/22/2008P09RR8".

Atas ialah kandungan terperinci Bagaimana Mencari Nilai Khusus Merentas Semua Jadual dan Lajur dalam Pangkalan Data Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn