Перейти к содержимому
Последнее обновление

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'

Примеры​

  1. Простая замена символа
SELECT translate('abcd', 'a', 'z');
+---------------------------+
| translate('abcd', 'a', 'z') |
+---------------------------+
| zbcd |
+---------------------------+
  1. Многократная замена одного и того же символа
SELECT translate('abcda', 'a', 'z');
+----------------------------+
| translate('abcda', 'a', 'z') |
+----------------------------+
| zbcdz |
+----------------------------+
  1. Замена специального символа
SELECT translate('Palhoça', 'ç', 'c');
+--------------------------------+
| translate('Palhoça', 'ç', 'c') |
+--------------------------------+
| Palhoca |
+--------------------------------+
  1. Удаление символа (пустая строка 'to')
SELECT translate('abcd', 'a', '');
+----------------------------+
| translate('abcd', 'a', '') |
+----------------------------+
| bcd |
+----------------------------+
  1. Повторяющиеся символы в строке 'from' (используется только первое сопоставление)
SELECT TRANSLATE('abacad', 'aac', 'zxy');
+-----------------------------------+
| TRANSLATE('abacad', 'aac', 'zxy') |
+-----------------------------------+
| zbzyzd |
+-----------------------------------+
  1. Строка 'to' короче строки 'from' (лишние символы удаляются)
SELECT TRANSLATE('abcde', 'ace', 'xy');
+-------------------------------+
| TRANSLATE('abcde', 'ace', 'xy') |
+-------------------------------+
| xbyd |
+-------------------------------+
  1. Замена символов UTF-8
SELECT TRANSLATE('ṭṛì ḍḍumai', 'ṭṛ', 'ab');
+-----------------------------------+
| TRANSLATE('ṭṛì ḍḍumai', 'ṭṛ', 'ab') |
+-----------------------------------+
| abì ḍḍumai |
+-----------------------------------+
  1. Замена цифр
SELECT TRANSLATE('a1b2c3', '123', 'xyz');
+----------------------------------+
| TRANSLATE('a1b2c3', '123', 'xyz') |
+----------------------------------+
| axbycz |
+----------------------------------+
  1. Замена специальных знаков
SELECT TRANSLATE('hello@world.com', '@.', '-_');
+--------------------------------------------+
| TRANSLATE('hello@world.com', '@.', '-_') |
+--------------------------------------------+
| hello-world_com |
+--------------------------------------------+

Ключевые слова​

TRANSLATE