최종 수정: 에
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). 나머지 예제는 경계 사례를 다룹니다.
- 기본 사용법:
<old>가 빈 문자열일 때의 삽입 동작.
SELECT replace_empty('abc', '', 'x');
+-------------------------------+
| replace_empty('abc', '', 'x') |
+-------------------------------+
| xaxbxcx |
+-------------------------------+
- 일반적인 부분 문자열 치환(
REPLACE와 동일한 동작).
SELECT replace_empty('hello', 'l', 'L');
+----------------------------------+
| replace_empty('hello', 'l', 'L') |
+----------------------------------+
| heLLo |
+----------------------------------+
<str>와<old>가 모두 빈 문자열인 경우.
SELECT replace_empty('', '', 'x');
+----------------------------+
| replace_empty('', '', 'x') |
+----------------------------+
| x |
+----------------------------+
- NULL 전파.
SELECT replace_empty(NULL, 'old', 'new');
+-----------------------------------+
| replace_empty(NULL, 'old', 'new') |
+-----------------------------------+
| NULL |
+-----------------------------------+
- 멀티바이트(UTF-8)
<new>.
SELECT replace_empty('hello', 'l', 'ṭṛìṭ');
+--------------------------------------------+
| replace_empty('hello', 'l', 'ṭṛìṭ') |
+--------------------------------------------+
| heṭṛìṭṭṛìṭo |
+--------------------------------------------+