본문 바로가기

개발/DB

[Oracle] 데이터베이스에서 특정 문자 검색하기

반응형

Oracle 데이터베이스에서 모든 테이블의 특정 컬럼에 특정 문자가 포함되어 있는지 확인하려면, 데이터 딕셔너리 뷰를 사용하여 테이블 및 컬럼 정보를 가져오고, 이를 기반으로 동적으로 쿼리를 생성해야 합니다.

PL/SQL 블록을 사용한 방법

다음은 이 작업을 수행하는 PL/SQL 블록의 예입니다:

DECLARE
search_term VARCHAR2(100) := '특정문자'; -- 여기에 검색할 문자를 입력하세요
v_sql VARCHAR2(4000);
v_cursor SYS_REFCURSOR;
v_table VARCHAR2(128);
v_column VARCHAR2(128);
BEGIN
FOR rec IN (SELECT table_name, column_name
FROM all_tab_columns
WHERE data_type IN ('CHAR', 'VARCHAR2')
AND owner = 'YOUR_SCHEMA') -- YOUR_SCHEMA를 실제 스키마로 변경하세요
LOOP
v_table := rec.table_name;
v_column := rec.column_name;
-- 동적 SQL 생성
v_sql := 'SELECT ''' || v_table || ''' AS table_name, ''' || v_column || ''' AS column_name ' ||
'FROM ' || v_table || ' ' ||
'WHERE ' || v_column || ' LIKE ''%' || search_term || '%''';
-- SQL 쿼리 실행
OPEN v_cursor FOR v_sql;
LOOP
FETCH v_cursor INTO v_table, v_column;
EXIT WHEN v_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Table: ' || v_table || ', Column: ' || v_column);
END LOOP;
CLOSE v_cursor;
END LOOP;
END;
/

설명

이 PL/SQL 블록의 주요 요소는 다음과 같습니다:

  • search_term 변수에 검색할 문자를 설정합니다.
  • all_tab_columns 뷰를 사용하여 현재 스키마의 모든 테이블과 컬럼을 조회합니다.
  • 각 테이블과 컬럼에 대해 동적 SQL 쿼리를 생성합니다.
  • 생성된 SQL 쿼리를 실행하고 결과를 출력합니다.

주의사항:

  • 이 스크립트는 DBMS_OUTPUT을 사용하여 결과를 출력합니다. SQL*Plus 또는 SQL Developer에서 DBMS_OUTPUT을 활성화해야 결과를 볼 수 있습니다.
  • 데이터베이스 성능에 영향을 줄 수 있으므로, 데이터베이스가 큰 경우 또는 검색할 문자가 많은 경우 신중하게 사용해야 합니다.
  • owner 조건을 자신의 스키마에 맞게 수정하십시오.

이 방법으로 데이터베이스 내 모든 테이블의 특정 컬럼에서 특정 문자가 포함되어 있는지 확인할 수 있습니다.

반응형