[Oracle] 오라클 문자열 치환 (REPLACE, TRANSLATE) 사용법 & 예제

오라클에서 문자열을 치환하는 함수는 REPLACE와 TRANSLATE가 있습니다. 하지만 둘의 사용용도는 전혀 다릅니다. REPLACE함수의 경우 일반적인 문자열 치환함수라고 생각하면 되고 TRANSLATE는 일종의 치환규칙을 정하는 함수라고 생각하시면 됩니다. 대부분 REPLACE를 많이쓰고 TRANSLATE는 거의 쓰이지는 않습니다만. TRANSLATE함수도 유용하게 쓰일 수 있는 용도가 분명있습니다. 이 용도는 아래에서 설명하겠습니다.

 

문자열 치환 REPLACE 함수

--사용법(문자열, 바꿀문자열, 바뀔문자열)
REPLACE(STR, TARGET_STR, REPLACE_STR)
SELECT
REPLACE('내가 그린 기린 그림은 잘 그린 기린 그림이다','기린','사자')
FROM DUAL
--결과 : 내가 그린 사자 그림은 잘 그린 사자 그림이다

REPLACE함수는 STR(문자열)에서 TARGET_STR(바꿀 문자열)을 찾아 이를 REPLACE_STR(바뀔 문자열)로 대체해주는 함수입니다.

SELECT
REPLACE('내가 그린 기린 그림은 잘 그린 기린 그림이다',' ','')
FROM DUAL
--결과 : 내가그린기린그림은잘그린기린그림이다

위와같이 문자열에 있는 공백을 전부 제거하는 용도로도 사용할 수 있습니다.

 

문자열 한글자씩 치환 TRANSLATE함수 (치환 규칙 정하기)

--사용법(문자열, 바꿀 문자열, 바뀔문자열)
(TRANSLATE(STR, FROM_STR, TO_STR)
SELECT
TRANSLATE('내가 그린 기린 그림은 잘 그린 기린 그림이다','기린','사자')
FROM DUAL
--결과 : 내가 그자 사자 그림은 잘 그자 사자 그림이다

REPLACE함수와 같은 예제인데도 불구하고 결과값이 다르게 나왔습니다. TRANSLATE함수는 REPLACE함수와는 달리 문자열 단위로 치환을 하지않고 문자 한글자씩 매핑하여 치환합니다. (위의 예제같은경우 기 -> 사 로 치환 / 린 -> 자로 치환) 위와같이 TRANSLATE함수는 일반적인 문자열 치환과정에서는 사용하기가 어렵습니다. 하지만 TRANSLATE함수가 전혀 쓰임새가 없는것은 아닙니다.

 

TRANSLATE함수를 유용하게 사용할 수 있는 경우

SELECT
TRANSLATE('010-1234-5678','1234567890','**********')
FROM DUAL
--결과 : ***-****-****

SELECT
TRANSLATE('WE ARE THE CHAMPION','ABCDEFGHIJKMNLOPQRSTUVWXYZ','abcdefghijkmnlopqrxtuvwxyz')
FROM DUAL
--결과 : we are the champion

TRANSLATE함수는 일반적인 문자열 치환규칙을 정할때 유용하게 사용할 수 있습니다. 위와같이 모든 숫자를 * 로 사용하겠다 혹은 모든 대문자 알파벳을 소문자로 치환하겠다를 예로 들 수 있겠습니다.

 

댓글

Designed by JB FACTORY