본문으로 건너뛰기
최종 수정: 에

REPLACE

설명​

REPLACE 함수는 문자열에서 지정된 부분 문자열이 나타나는 모든 위치를 새 부분 문자열로 치환하는 데 사용됩니다. 이 함수는 문자열에서 일치하는 부분 문자열을 모두 치환하여 전체 치환 작업을 수행합니다.

REPLACE_EMPTY 함수와의 차이점:

  • REPLACE()는 빈 문자열을 포함하여 지정된 부분 문자열을 치환합니다.
  • REPLACE_EMPTY()는 빈 값이나 빈 문자열을 지정된 값으로 치환하는 데 특화된 함수입니다.

구문​

REPLACE(<str>, <old>, <new>)

매개변수​

매개변수설명
<str>치환할 원본 문자열입니다. 타입: VARCHAR
<old>치환 대상 부분 문자열입니다. str에서 찾을 수 없으면 치환하지 않습니다. 타입: VARCHAR
<new>old를 치환할 새 부분 문자열입니다. 타입: VARCHAR

반환값​

치환 후의 새 문자열을 나타내는 VARCHAR 타입의 값을 반환합니다.

치환 규칙:

  • 문자열에서 old와 일치하는 모든 부분 문자열을 치환합니다.
  • 치환 시 대소문자를 구분합니다.
  • old가 빈 문자열이면 원본 문자열을 반환합니다(작업을 수행하지 않음).
  • new가 빈 문자열이면 old와 일치하는 모든 부분 문자열을 삭제합니다.

특수한 경우:

  • 매개변수 중 하나라도 NULL이면 NULL을 반환합니다.
  • str이 빈 문자열이면 빈 문자열을 반환합니다.
  • old가 빈 문자열이면 원본 str을 반환합니다(치환하지 않음).
  • str에서 old를 찾을 수 없으면 원본 str을 반환합니다.

예제​

  1. 기본 치환 작업
SELECT REPLACE('hello world', 'world', 'universe');
+---------------------------------------------+
| REPLACE('hello world', 'world', 'universe') |
+---------------------------------------------+
| hello universe |
+---------------------------------------------+
  1. 일치하는 여러 항목 치환
SELECT REPLACE('apple apple apple', 'apple', 'orange');
+------------------------------------------------+
| REPLACE('apple apple apple', 'apple', 'orange') |
+------------------------------------------------+
| orange orange orange |
+------------------------------------------------+
  1. 부분 문자열 삭제(빈 문자열로 치환)
SELECT REPLACE('banana', 'a', '');
+---------------------------+
| REPLACE('banana', 'a', '') |
+---------------------------+
| bnn |
+---------------------------+
  1. NULL 값 처리
SELECT REPLACE(NULL, 'old', 'new'), REPLACE('test', NULL, 'new'), REPLACE('test', 'old', NULL);
+------------------------------+------------------------------+------------------------------+
| REPLACE(NULL, 'old', 'new') | REPLACE('test', NULL, 'new') | REPLACE('test', 'old', NULL) |
+------------------------------+------------------------------+------------------------------+
| NULL | NULL | NULL |
+------------------------------+------------------------------+------------------------------+
  1. UTF-8 문자 치환
SELECT REPLACE('ṭṛì ḍḍumai test ṭṛì ḍḍumannàri', 'ṭṛì', 'replaced');
+-----------------------------------------------------------+
| REPLACE('ṭṛì ḍḍumai test ṭṛì ḍḍumannàri', 'ṭṛì', 'replaced') |
+-----------------------------------------------------------+
| replaced ḍḍumai test replaced ḍḍumannàri |
+-----------------------------------------------------------+
  1. 빈 문자열 경계 사례: str이 비어 있으면 빈 문자열을 반환하고, old가 비어 있으면 str을 그대로 반환하며, new가 비어 있으면 일치하는 모든 항목을 삭제합니다.
SELECT REPLACE('', 'old', 'new'), REPLACE('test', '', 'new'), REPLACE('test', 'old', '');
+---------------------------+----------------------------+----------------------------+
| REPLACE('', 'old', 'new') | REPLACE('test', '', 'new') | REPLACE('test', 'old', '') |
+---------------------------+----------------------------+----------------------------+
| | test | test |
+---------------------------+----------------------------+----------------------------+
  1. 대소문자를 구분하는 치환(소문자 hello만 일치)
SELECT REPLACE('Hello HELLO hello', 'hello', 'hi');
+---------------------------------------------+
| REPLACE('Hello HELLO hello', 'hello', 'hi') |
+---------------------------------------------+
| Hello HELLO hi |
+---------------------------------------------+
  1. old가 없는 경우: str을 그대로 반환
SELECT REPLACE('hello world', 'xyz', 'abc');
+--------------------------------------+
| REPLACE('hello world', 'xyz', 'abc') |
+--------------------------------------+
| hello world |
+--------------------------------------+
  1. 겹치지 않고 반복되는 일치 항목 치환
SELECT REPLACE('123123123', '123', 'ABC');
+------------------------------------+
| REPLACE('123123123', '123', 'ABC') |
+------------------------------------+
| ABCABCABC |
+------------------------------------+