Последнее обновление
TRANSLATE
Описание
Функция TRANSLATE выполняет посимвольную замену в строке, преобразуя символы исходной строки в соответствии с правилами сопоставления. Эта функция заменяет каждый символ исходной строки, присутствующий в строке 'from', соответствующим символом на той же позиции в строке 'to'.
Синтаксис
TRANSLATE(<source>, <from>, <to>)
Параметры
| Параметр | Описание |
|---|---|
<source> | Исходная строка для преобразования. Тип: VARCHAR |
<from> | Набор символов, подлежащих замене. Тип: VARCHAR |
<to> | Набор символов для замены. Тип: VARCHAR |
Возвращаемое значение
Возвращает значение типа VARCHAR, представляющее строку, преобразованную в соответствии с правилами сопоставления символов.
Правила сопоставления символов:
- Символы сопоставляются один к одному на основе их позиций в строках 'from' и 'to'
- 1-й символ в 'from' соответствует 1-му символу в 'to', 2-й соответствует 2-му и так далее
- Если 'from' содержит повторяющиеся символы, используется сопоставление для первого вхождения, а последующие повторения игнорируются
- Символы исходной строки, отсутствующие в строке 'from', остаются без изменений
Особые случаи:
- Возвращает NULL, если любой из параметров равен NULL
- Возвращает пустую строку, если исходная строка пуста
- Возвращает исходную строку без изменений, если строка 'from' пуста
- Удаляет из исходной строки все символы, присутствующие в 'from', если строка 'to' пуста
- Если строка '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