DataBase/Oracle

[ORACLE]문자열 치환 REPLACE 함수

DevStory 2021. 6. 25.

REPLACE Function

REPLACE(string_expression, string_pattern [,string_replacement])

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


매개변수

string_expression

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

- NULL 또는 빈 값('')인 경우 REPLACE함수는 NULL을 반환합니다.

 

string_pattern

- string_expression에 포함된 특정 문자열(string_pattern)입니다.

- string_expression에 특정 문자열(string_pattern)이 존재하지 않을 경우 REPLACE 함수는 치환을 하지 않으므로 string_expression을 반환합니다.

 

string_replacement

- 특정 문자열(string_expression)을 string_replacement로 치환합니다.

- 생략하면, 특정 문자열(string_expression)을 공백으로 치환합니다.


EX 1) 첫 번째 매개변수가 빈 값('') 또는 NULL일 경우

SELECT NVL(REPLACE('',  '', 'TRUE'), 'EMPTY') AS COL_EMPTY
     , NVL(REPLACE(NULL, NULL ,'TRUE'), 'NULL') AS COL_NULL
FROM DUAL;

첫 번째 매개변수가 빈 값('') 또는 NULL일 경우 빈 값('')과 NULL을 문자열 'TRUE'로 치환하였지만,

NULL이 반환되어 NVL 함수에서 'EMPTY'와 'NULL'이라는 문자열이 반환되었습니다.


EX 2) 세 번째 매개변수 생략

SELECT REPLACE('DATABASE', 'DATA') AS COL_RESULT
     , LENGTH(REPLACE('DATABASE', 'DATA')) AS COL_LEN
FROM DUAL;

'DATABASE' 문자열에서 'DATA'가 공백 처리되어 'BASE' 문자열이 반환되었습니다.


EX 3) 문자열 치환

SELECT REPLACE('ORACLE DATABASE', 'ORACLE', 'MySQL') AS COL_RESULT
FROM DUAL;

문자열 'ORACLE'이 'MySQL'로 치환되었습니다.


EX 4) 캐리지 리턴(carriage return) 치환

REPLACE(REPLACE( string_expression, CHR(10) ), CHR(13) )

브라우저와 OS마다 캐리지 리턴 처리되는 방식이 다르다는 점을 주의합니다.


EX 5) 첫 번째 매개변수와 두 번째 매개변수가 동일한 경우

SELECT NVL(REPLACE('ORACLE', 'ORACLE'), 'NULL') AS COL_RETURN
FROM DUAL;

NULL이 반환됩니다.


마무리

특수 문자를 치환해야 하는 경우에는 REGEXP_REPLACE 또는 TRANSLATE를 사용하는 두 가지 다른 방법이 있습니다.

REPLACE 함수를 중첩하여 특수 문자를 치환할 수 있지만, 성능면에서 좋지 않습니다.

반응형

댓글