최종 수정: 에
TRANSLATE
설명
TRANSLATE 함수는 문자열을 문자 단위로 치환하며, 매핑 규칙에 따라 원본 문자열의 문자를 변환합니다. 이 함수는 원본 문자열의 각 문자 중 'from' 문자열에 포함된 문자를 'to' 문자열의 같은 위치에 있는 문자로 치환합니다.
구문
TRANSLATE(<source>, <from>, <to>)
매개변수
| 매개변수 | 설명 |
|---|---|
<source> | 변환할 원본 문자열입니다. 타입: VARCHAR |
<from> | 치환할 문자 집합입니다. 타입: VARCHAR |
<to> | 치환에 사용할 문자 집합입니다. 타입: VARCHAR |
반환 값
문자 매핑 규칙에 따라 변환된 문자열을 VARCHAR 타입으로 반환합니다.
문자 매핑 규칙:
- 'from'과 'to' 문자열의 위치를 기준으로 문자를 일대일로 매핑합니다.
- 'from'의 1번째 문자는 'to'의 1번째 문자에, 2번째 문자는 2번째 문자에 매핑되며, 나머지 문자도 같은 방식으로 매핑됩니다.
- 'from'에 중복된 문자가 있으면 처음 등장한 문자의 매핑을 사용하고 이후의 중복 문자는 무시합니다.
- 원본 문자열에서 'from' 문자열에 포함되지 않은 문자는 그대로 유지됩니다.
특수한 경우:
- 매개변수 중 하나라도 NULL이면 NULL을 반환합니다.
- 원본 문자열이 빈 문자열이면 빈 문자열을 반환합니다.
- 'from'이 빈 문자열이면 원본 문자열을 그대로 반환합니다.
- 'to'가 빈 문자열이면 원본 문자열에서 'from'에 포함된 모든 문자를 삭제합니다.
- 'to' 문자열이 'from'보다 짧으면 원본 문자열에서 'from'의 초과 부분에 해당하는 문자를 삭제합니다.
예제
- 기본 문자 치환
SELECT translate('abcd', 'a', 'z');
+---------------------------+
| translate('abcd', 'a', 'z') |
+---------------------------+
| zbcd |
+---------------------------+
- 같은 문자가 여러 번 등장할 때의 치환
SELECT translate('abcda', 'a', 'z');
+----------------------------+
| translate('abcda', 'a', 'z') |
+----------------------------+
| zbcdz |
+----------------------------+
- 특수 문자 치환
SELECT translate('Palhoça', 'ç', 'c');
+--------------------------------+
| translate('Palhoça', 'ç', 'c') |
+--------------------------------+
| Palhoca |
+--------------------------------+
- 문자 삭제('to'가 빈 문자열인 경우)
SELECT translate('abcd', 'a', '');
+----------------------------+
| translate('abcd', 'a', '') |
+----------------------------+
| bcd |
+----------------------------+
- 'from' 문자열에 중복된 문자가 있는 경우(첫 번째 매핑만 사용)
SELECT TRANSLATE('abacad', 'aac', 'zxy');
+-----------------------------------+
| TRANSLATE('abacad', 'aac', 'zxy') |
+-----------------------------------+
| zbzyzd |
+-----------------------------------+
- 'to' 문자열이 'from'보다 짧은 경우(초과 문자 삭제)
SELECT TRANSLATE('abcde', 'ace', 'xy');
+-------------------------------+
| TRANSLATE('abcde', 'ace', 'xy') |
+-------------------------------+
| xbyd |
+-------------------------------+
- UTF-8 문자 치환
SELECT TRANSLATE('ṭṛì ḍḍumai', 'ṭṛ', 'ab');
+-----------------------------------+
| TRANSLATE('ṭṛì ḍḍumai', 'ṭṛ', 'ab') |
+-----------------------------------+
| abì ḍḍumai |
+-----------------------------------+
- 숫자 문자 치환
SELECT TRANSLATE('a1b2c3', '123', 'xyz');
+----------------------------------+
| TRANSLATE('a1b2c3', '123', 'xyz') |
+----------------------------------+
| axbycz |
+----------------------------------+
- 특수 기호 치환
SELECT TRANSLATE('hello@world.com', '@.', '-_');
+--------------------------------------------+
| TRANSLATE('hello@world.com', '@.', '-_') |
+--------------------------------------------+
| hello-world_com |
+--------------------------------------------+
키워드
TRANSLATE