DataBase/Oracle

[ORACLE]문자 치환 TRNSLATE 함수

DevStory 2021. 6. 26.

TRANSLATE Function

TRANSLATE(string, from_string, to_string)

TRANSLATE 함수는 특정 문자를 지정된 문자로 치환된 문자열을 반환합니다.

REPLACE 함수와는 다르게 단일 문자를 치환합니다.

 

설명하기 어려운 함수이므로 바로 샘플 쿼리와 그림으로 설명합니다.

샘플 쿼리
SELECT TRANSLATE('ORACLE', 'OAE', '12') AS TRANS_RESULT
     , LENGTH(TRANSLATE('ORACLE', 'OAE', '12')) AS TRANS_LEN
FROM  DUAL;
치환 과정

원본 문자열의 치환

쿼리 결과

문자 'E'는 공백으로 치환이 되었기 때문에 치환된 문자열의 길이는 5입니다.


매개변수

string

- 기준이 되는 원본 문자열입니다.

 

from_string

- 검색할 문자열입니다.

 

to_string

- 치환할 문자열입니다.


특징

  1. 첫 번째, 두 번째, 세 번째 매개변수에서 하나라도 NULL 또는 빈 값('')인 경우 TRANSLATE함수는 NULL을 반환합니다.
  2. CLOB 타입에 대해서는 치환을 지원하지 않지만, 문자열로 타입을 변환하면 사용 가능합니다.
반응형

EX 1) 첫 번째 매개변수가 NULL 및 공백

SELECT NVL(TRANSLATE('', 'ORA', '123'), 'EMPTY') AS EMPTY_RESULT
     , NVL(TRANSLATE('', 'ORA', '123'), 'NULL') AS NULL_RESULT
FROM  DUAL;


EX 2) 단일 문자 치환

SELECT TRANSLATE('ORACLE', 'O', 'A') AS TRANS_RESULT
FROM  DUAL;


EX 3) 여러 문자 치환

SELECT TRANSLATE('ORACLE', 'OAL', '123') AS TRANS_RESULT
FROM  DUAL;


EX 4) 문자 제거

SELECT TRANSLATE('ORACLE', 'ORA', 'O') AS TRANS_RESULT
FROM  DUAL;

문자 'R'과 'A'의 치환할 문자를 지정하지 않았으므로 제거되었습니다.


EX 5) 띄어쓰기 치환

SELECT TRANSLATE('O R A C L E', ' ', '_') AS TRANS_RESULT
FROM  DUAL;

띄어쓰기를 치환하기 위해서는 두 번째 매개변수에 띄어쓰기(' ')를 명시해줘야 합니다.

공백('')과 띄어쓰기(' ')는 다릅니다.


EX 6) 동일한 문자 여러 번 치환

SELECT TRANSLATE('ORACLE', 'OO', 'AB') AS TRANS_RESULT
FROM  DUAL;


EX 7) 중첩된 REPLACE 함수를 TRANSLATE 함수로 처리

SELECT REPLACE(REPLACE(REPLACE(REPLACE('2*[3+4]/{7-2}','[','('), ']', ')'), '{', '('), '}', ')') AS NEST_REPLACE_RESULT
     , TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()') AS TRAN_RESULT
FROM DUAL;

반응형

댓글