>데이터 베이스 >MySQL 튜토리얼 >Oracle 데이터베이스의 모든 테이블과 열에서 특정 값을 찾는 방법은 무엇입니까?

Oracle 데이터베이스의 모든 테이블과 열에서 특정 값을 찾는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-22 12:52:10317검색

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

Oracle 데이터베이스의 모든 테이블 및 열에서 특정 값 검색

오라클 데이터베이스의 수많은 테이블과 필드에서 특정 값을 찾아야 합니다. 데이터 원본에 대한 지식이 제한되어 있더라도 "1/22/2008P09RR8" 값은 변경되지 않은 상태로 유지됩니다.

후보 열 찾기

초기 쿼리에서 예상 이름 지정 패턴 "%DTN%"을 기반으로 후보 열을 식별하려고 시도했지만 성공하지 못했습니다. 대신 다음 쿼리를 사용하면 더 정확한 검색이 가능합니다.

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

그러나 "DTN"이 단지 추측일 뿐이라면 이 접근 방식은 기대한 결과를 얻지 못할 수도 있습니다.

모든 열 검색

값이 실제로 열에 저장되어 있다고 가정하면 다음을 사용하여 각 테이블의 모든 열을 체계적으로 검색할 수 있습니다.

방법 1: 동적 SQL

PL/SQL 및 동적 SQL을 사용하면 런타임에 SQL 쿼리를 생성하고 실행할 수 있습니다. 다음 코드 조각은 이를 달성합니다.

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

방법 2: 스크립트 쿼리

또는 각 테이블의 각 열에 대해 별도의 SQL 쿼리를 생성할 수도 있습니다. 예를 들어 "table1"이라는 테이블의 경우 쿼리는 다음과 같습니다.

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

이러한 방법을 사용하면 Oracle 데이터베이스의 광대한 공간에서 찾기 어려운 값 "1/22/2008P09RR8"을 주의 깊게 검색할 수 있습니다.

위 내용은 Oracle 데이터베이스의 모든 테이블과 열에서 특정 값을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.