Nerdy

Oracle SQL : TRANSLATE와 REPLACE 함수 차이점 본문

SQL

Oracle SQL : TRANSLATE와 REPLACE 함수 차이점

뚱인데요? 2022. 3. 29. 09:51
728x90

Syntax

TRANSLATE와 REPLACE 함수 모두 해당 지정된 문자열을 바꿔주는 역할을 하는데 약간의 차이점이 있습니다.

REPLACE 함수는 char 문자열에서 search_string 문자열을 찾아 replace_string 문자열을 바꿔주는 기능을 합니다. 여기서 중요한건 search_string에 나오는 정확한 문자열이 char 문자열에 없으면 문자열 변환 작업을 하지 않습니다.

아래 예시를 보시면

 

이렇게 출력이 됩니다. 'ACCOUNTING' 문자열에 'G' 문자가 있기 때문에 '!@#'로 대체해서 출력해주는 것입니다.

만약 'G'가 아닌 'AIG'를 넣으면 어떻게 될까요?

 

 

'ACCOUNTING' 문자열에 'A', 'I', 'G' 문자가 각각 들어가 있지만 'AIG'가 붙어 있는 문자열은 없기 때문에 문자열 대체 작업을 수행하지 않습니다.

 

 

하지만 이것을 TRANSLATE 함수에 적용하면

 

 

다른 결과값이 나오게 됩니다.

REPLACE는 지정된 정확한 문자열을 찾아서 대체 문자열로 변경하지만, TRANSLATE는 지정문자열과 대체문자열을 각각 하나의 문자로 대체하게 됩니다.

'AIG'를 '!@#'로 TRANSLATE를 쓴다고 하면 순서대로 A = !, I = @, G = # 대체되게 됩니다.

 

 

REPLACE 주의점

대체 문자열을 지정하지 않으면(null) search_string에 의해 찾아진 문자들은 삭제되어 리턴됩니다.

 

TRANSLATE 주의점

TRANSLATE도 대체 문자열을 정확히 지정하지 않으면 지정된 문자는 삭제되고 리턴이 됩니다.

728x90

'SQL' 카테고리의 다른 글

MySQL 한글 인코딩 설정하기  (0) 2022.10.27
Python과 R을 이용한 Oracle SQL 접근  (0) 2022.06.15
Oracle SQL 함수 정리 : 날짜  (0) 2022.03.29
Oracle SQL 함수 정리 : 숫자  (0) 2022.03.29
Oracle SQL 함수 정리 : 문자  (0) 2022.03.29