DataBase/Oracle

[Oracle] REPLACE 함수와 TRANSLATE 함수의 차이점

mingmongs 2025. 5. 28. 09:00

title

문자열 치환 관련 함수에는 대표적으로 REPLACE 함수가 있다.
이와 비슷한 역할을 하는 또다른 문자열 함수로는 TRANSLATE 함수가 있다.
REPLACE와 TRANSLATE 함수 둘 다 해당 지정된 문자열을 바꿔주는 역할을 하지만, 약간의 차이점이 있다.
이 차이점에 대해 알아보자.

 

1) REPLACE 함수

1-1) 문법

: REPLACE("컬럼명 or 문자열", "찾을문자", "치환문자")

1-2) 예시1

SELECT REPLACE('WATERMELON', 'E', '@#!')
FROM DUAL;


결과값

img1

 

1-3) 예시2

SELECT REPLACE('WATERMELON', 'WTR', '@#!')
FROM DUAL;


결과값

img2

 

1-4) 특징

: 치환할 문자열인 char 문자열에 대하여, 찾을 문자열이 정확히 맞지 않으면 치환되지 않는다.

SELECT REPLACE("APPLE", "PE", "@#$%")
FROM DUAL;

예를 들어 위와 같이 함수를 사용하는 경우,
치환할 문자열인 "APPLE"에서 "PE" 라는 문자열이 존재하지 않기 때문에 치환되지 않는다.
결과적으로 출력값은 그대로 "APPLE"가 된다.

 

1-5) 주의할점

: 대체 문자열을 지정해주지 않으면, 찾은 문자열이 삭제되어 반환된다.

SELECT REPLACE('BANANA', 'A')
FROM DUAL;

 

결과값

img3

 

2) TRANSLATE 함수

2-1) 문법

: TRANSLATE("컬럼명 or 문자열", "찾을문자", "치환문자")

 

2-2) 예시1

SELECT TRANSLATE('WATERMELON', 'E', '@#!')
FROM DUAL;

 

결과값

img4

 

2-3) 예시2

SELECT TRANSLATE('WATERMELON', 'WTR', '@#!')
FROM DUAL;

 

결과값

img5

 

2-4) 특징

: 치환할 char 문자열에 대하여, 찾을 문자열과 치환될 문자열을 각각 하나의 문자로 매칭하여 치환하게 된다.

SELECT TRANSLATE("APPLE", "PE", "@#")
FROM DUAL;

예를 들어 위와 같이 함수를 사용하는 경우,
"P" 문자는 "@" 문자와 매칭하고 "E" 문자는 "#" 문자와 매칭하여 치환하게 된다.
다시 말하면 "P" 문자 각각은 "@"로 치환되고, "E" 문자는 각각 "#"로 치환된다.
결과적으로 출력값은 "A@@L#"가 된다.

 

2-5) 주의할점

: 찾는 문자열의 길이만큼 정확히 대체 문자열을 지정해주지 않으면, 찾은 문자에 대해 대체 문자가 없는 경우는 삭제되어 반환된다.

SELECT TRANSLATE('WATERMELON', 'WTR', '@')
FROM DUAL;

 

결과값

img5

 

3) 차이점

REPLACE는 ' '로 감싼 문자열 전체 그 자체로 동일한 경우에 변경을 하고
TRANSLATE는 ' '로 감싼 문자열 한자리씩을 순서대로 변경할 문자열의 한자리씩과 매칭하여 변경한다.

 

 

[reference]
https://whiplash-bd.tistory.com/24