집 >데이터 베이스 >MySQL 튜토리얼 >Oracle 데이터베이스의 모든 테이블과 열에서 특정 값을 찾는 방법은 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!