특히, 코드값 등을 비교하는 쿼리를 작성할 때, 아래와 같이 특정 시퀀스에 관계없이 일치 여부를 판별해야 하는 경우가 종종 있다.
아래의 예는 TMP_TABLE에서 A_COL과 B_COL을 비교해 EQUAL 컬럼을 생성한 예제이다.
즉, 모든 유니크한 원소의 개수는 일치하면서 순서만 다른 경우를 판별하는 케이스인데, CONNECT BY LEVEL 등을 활용한 구문보다 TRANSLATE의 알고리즘을 활용하면 보다 간결하고 빠르게 동작하는 쿼리를 작성할 수 있다.
#2. 쿼리
아래와 같이 TRANSLATE 구문을 사용해 문제를 해결할 수 있다.
--string값의 순서에 상관없이 비교하기
SELECT A_COL
,B_COL
,CASE WHEN TRANSLATE(A_COL, B_COL,' ') = TRANSLATE(B_COL, A_COL,' ')
THEN 'TRUE'
ELSE 'FALSE' END AS EQUAL
FROM TMP_TABLE
;
댓글 없음:
댓글 쓰기