반응형
특정 데이터만을 가지고 있을 때, 해당 데이터가 어떤 테이블의 어떤 컬럼에 포함되어 있는지를 확인하기 위한 방법을 기록한다.
먼저, 특정 데이터만 가지고 있을 때 해당 특정 데이터가 모든 테이블과 모든 컬럼에 대해 SELECT문을 만들어서 조회를 하면 된다. UNION을 통해서 말이다.
아래의 쿼리를 보면, USER_TAB_COLUMNS의 메타 데이터 테이블을 사용하여 테이블 이름, 컬럼이름 등을 가져오고, COLUMN_NAME에서 특정 데이터를 가지고 있는 것을 조회하는 쿼리다.
SELECT 'SELECT ''' || TABLE_NAME || ''', ''' || COLUMN_NAME || ''',' || COLUMN_NAME || ' FROM '
|| TABLE_NAME || ' WHERE ' || COLUMN_NAME || '= ''특정 데이터 값'' UNION '
FROM USER_TAB_COLUMNS
위의 쿼리를 실행하면 아래와 같이 결과가 나온다. 이 결과를 가져와서 조회를 실행하면 어떤 테이블에 어떤 컬럼에 특정 데이터가 있는지를 보여준다.
SELECT 'TESTT', 'COLTEST01',SADJKY FROM TESTT WHERE COLTEST01 = 'A' UNION
SELECT 'TESTT', 'COLTEST02',WAREKY FROM TESTT WHERE COLTEST02 = 'A' UNION
SELECT 'TESTT', 'COLTEST03',ADJUTY FROM TESTT WHERE COLTEST03 = 'A' UNION
SELECT 'TESTT', 'COLTEST04',DOCDAT FROM TESTT WHERE COLTEST04 = 'A' UNION
SELECT 'TESTT', 'COLTEST05',DOCCAT FROM TESTT WHERE COLTEST05 = 'A' UNION
SELECT 'TESTT', 'COLTEST06',ADJUCA FROM TESTT WHERE COLTEST06 = 'A' UNION
SELECT 'TESTT', 'COLTEST07',USRID1 FROM TESTT WHERE COLTEST07 = 'A' UNION
SELECT 'TESTT', 'COLTEST08',UNAME1 FROM TESTT WHERE COLTEST08 = 'A' UNION
추가적으로, 특정 데이터가 모든 테이블에서 모든 컬럼 중 특정 데이터를 포함되어 있는 것을 확인하려면 아래의 조회 쿼리를 사용하면 된다.
SELECT 'SELECT ''' || TABLE_NAME || ''', ''' || COLUMN_NAME || ''',' || COLUMN_NAME || ' FROM '
|| TABLE_NAME || ' WHERE ' || COLUMN_NAME || ' LIKE ''%푸드%'' UNION '
FROM USER_TAB_COLUMNS
반응형
'IT > Oracle' 카테고리의 다른 글
[Oracle] 오라클(Oracle) ora-00257 archiver error. connect as sysdba only until resolved 문제 해결 방법 (0) | 2023.10.01 |
---|---|
[Oracle] 오라클(Oracle) TO_NUMBER 999999D99 사용시 주의해야 할 점 (0) | 2023.08.13 |
[Oracle] 오라클(Oracle) 문자열 SPLIT하는 방법 (0) | 2023.07.21 |
[Oracle] 오라클(Oracle) ORA-01843 지정한 월이 부적합합니다 문제 해결 방법 (0) | 2023.07.11 |
[Oracle] 오라클(Oracle) 데이터 롤백하는 방법 (0) | 2023.07.05 |
[Oracle] 오라클(Oracle) 날짜 및 AMPM 구하는 방법 (0) | 2023.07.03 |
[Oracle] 오라클(Oracle) fetch 문의 into 항목에 값의 수가 잘못됐습니다. 해결 방법 (0) | 2023.06.30 |
[Oracle] 오라클(Oracle) NUMBER 타입 소수점에 대한 글 (0) | 2023.06.11 |
최근댓글