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

REPLACE_EMPTY

설명​

REPLACE_EMPTY 함수는 문자열의 일부 문자를 다른 문자로 치환하는 데 사용됩니다. REPLACE 함수와 달리, old가 빈 문자열이면 new 문자열을 str 문자열의 각 문자 앞과 str 문자열의 끝에 삽입합니다.

이 함수는 주로 Presto 및 Trino와의 호환성을 위해 사용되며, Presto 및 Trino의 REPLACE() 함수와 동작이 완전히 같습니다. 버전 2.1.5부터 지원됩니다.

구문​

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

매개변수​

매개변수설명
<str>치환 대상 문자열입니다.
<old>치환할 부분 문자열입니다. <old>가 <str>에 없으면 치환하지 않습니다. <old>가 빈 문자열이면 <new> 문자열을 str 문자열의 각 문자 앞에 삽입합니다.
<new><old>를 대체할 새 부분 문자열입니다.

반환 값​

부분 문자열을 치환한 새 문자열을 VARCHAR로 반환합니다. 특수한 경우는 다음과 같습니다:

  • 매개변수 중 하나라도 NULL이면 NULL을 반환합니다.
  • <old>가 빈 문자열이면 <new>를 <str>의 각 문자 앞과 끝에 삽입한 문자열을 반환합니다.
  • <old>를 <str>에서 찾을 수 없으면 <str>를 그대로 반환합니다.

예제​

참고로, REPLACE는 <old>가 나타나는 모든 부분을 치환하고 문자열의 나머지 부분은 그대로 유지합니다:

SELECT replace('hello world', 'world', 'universe');
+---------------------------------------------+
| replace('hello world', 'world', 'universe') |
+---------------------------------------------+
| hello universe |
+---------------------------------------------+

REPLACE_EMPTY는 일반적인 경우에는 동일하게 동작하지만(아래 예제 2 참조), <old>가 빈 문자열일 때는 동작이 다릅니다. 이때는 <new>를 <str>의 각 문자 앞과 끝에 삽입합니다(예제 1). 나머지 예제는 경계 사례를 다룹니다.

  1. 기본 사용법: <old>가 빈 문자열일 때의 삽입 동작.
SELECT replace_empty('abc', '', 'x');
+-------------------------------+
| replace_empty('abc', '', 'x') |
+-------------------------------+
| xaxbxcx |
+-------------------------------+
  1. 일반적인 부분 문자열 치환(REPLACE와 동일한 동작).
SELECT replace_empty('hello', 'l', 'L');
+----------------------------------+
| replace_empty('hello', 'l', 'L') |
+----------------------------------+
| heLLo |
+----------------------------------+
  1. <str>와 <old>가 모두 빈 문자열인 경우.
SELECT replace_empty('', '', 'x');
+----------------------------+
| replace_empty('', '', 'x') |
+----------------------------+
| x |
+----------------------------+
  1. NULL 전파.
SELECT replace_empty(NULL, 'old', 'new');
+-----------------------------------+
| replace_empty(NULL, 'old', 'new') |
+-----------------------------------+
| NULL |
+-----------------------------------+
  1. 멀티바이트(UTF-8) <new>.
SELECT replace_empty('hello', 'l', 'ṭṛìṭ');
+--------------------------------------------+
| replace_empty('hello', 'l', 'ṭṛìṭ') |
+--------------------------------------------+
| heṭṛìṭṭṛìṭo |
+--------------------------------------------+