오라클 두 테이블의 컬럼에서 같은 값 확인 ORACLE DECODE 활용
오라클 두 테이블의 컬럼에서 같은 값 확인 ORACLE DECODE 활용
두 테이블의 컬럼에서 같은 값이 있는지 확인하기 위해서는 OUTER조인과 DECODE를 활용한다.
예를 들어 A테이블의 B컬럼과 C테이블의 D컬럼에서 같은 값이 있는지 확인하고 싶다고 하자.
TABLE A = B{ 1, 2, 4, 6, 7 }
TABLE C = D{ 1, 3, 6, 7 }
테이블이 위와 같다면 1, 6, 7 값이 중복되는 것을 확인할 수 있다.
그럼 쿼리를 사용해 값을 확인해보자.
SELECT A1.B
, C1.D
FROM A A1
LEFT JOIN C C1 ON(C1.D = A1.B)
위의 쿼리의 결과는 아래와 같다.
B D
-----------------
1 1
2 (NULL)
4 (NULL)
6 6
7 7
LEFT JOIN을 사용하였기 때문에 같은 값이 없을 경우 NULL로 표시되는 것이다.
그럼 DECODE를 사용해 값이 같다면 'Y'를 다르다면 'N' 를 표시되도록 해보자.
- DECODE 사용법
DECODE(value0, value1, value2, value3);
value0 의 값이 value1일 경우 value2를
아닐경우 value3 을 리턴한다.
SELECT A1.B
, C1.D
, DECODE(C1.D, NULL, 'N', 'Y') AS SYNC_CHECK
FROM A A1
LEFT JOIN C C1 ON(C1.D = A1.B)
위의 쿼리 결과는 아래와 같다.
B D SYNC_CHECK
----------------------------------------
1 1 Y
2 (NULL) N
4 (NULL) N
6 6 Y
7 7 Y
값이 NULL일 경우 N 을, NULL이 아닐경우 Y를 리턴한다.
이렇게 하면 두 테이블의 컬럼들에서 같은 값이 있는지 없는지를 확인 할 수 있다.