Database/SQL

오라클 두 테이블의 컬럼에서 같은 값 확인 ORACLE DECODE 활용

리커니 2015. 8. 5. 14:41
반응형

 

오라클 두 테이블의 컬럼에서 같은 값 확인 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를 리턴한다.

 

이렇게 하면 두 테이블의 컬럼들에서 같은 값이 있는지 없는지를 확인 할 수 있다.

 

반응형