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

translate

Описание

Заменяет указанные символы в строке. Функция принимает строку (source) в качестве входных данных и заменяет символы from_string в source на to_string.

Эта функция поддерживается начиная с версии 1.5.0.

Синтаксис

TRANSLATE(source, from_string, to_string)

Параметры

  • source: поддерживает тип VARCHAR. Исходная строка для перевода. Если символ в source не найден в from_string, он просто включается в результирующую строку.

  • from_string: поддерживает тип VARCHAR. Каждый символ в from_string либо заменяется соответствующим символом в to_string, либо, если соответствующего символа нет (т.е. если to_string содержит меньше символов, чем from_string), символ исключается из результирующей строки. См. примеры 2 и 3. Если символ встречается несколько раз в from_string, действует только его первое вхождение. См. пример 5.

  • to_string: поддерживает тип VARCHAR. Строка, используемая для замены символов. Если в to_string указано больше символов, чем в аргументе from_string, дополнительные символы из to_string игнорируются. См. пример 4.

Возвращаемое значение

Возвращает значение типа VARCHAR.

Сценарии, когда результат равен NULL:

  • Любой из входных параметров равен NULL.

  • Длина результирующей строки после перевода превышает максимальную длину (1048576) для VARCHAR.

Примеры

-- Заменить 'ab' в исходной строке на '12'.
mysql > select translate('abcabc', 'ab', '12') as test;
+--------+
| test |
+--------+
| 12c12c |
+--------+

-- Заменить 'mf1' в исходной строке на 'to'. 'to' содержит меньше символов, чем 'mf1', и '1' исключается из результирующей строки.
mysql > select translate('s1m1a1rrfcks','mf1','to') as test;
+-----------+
| test |
+-----------+
| starrocks |
+-----------+

-- Заменить 'ab' в исходной строке на '1'. '1' содержит меньше символов, чем 'ab', и 'b' исключается из результирующей строки.
mysql > select translate('abcabc', 'ab', '1') as test;
+------+
| test |
+------+
| 1c1c |
+------+

-- Заменить 'ab' в исходной строке на '123'. '123' содержит больше символов, чем 'ab', и '3' игнорируется.
mysql > select translate('abcabc', 'ab', '123') as test;
+--------+
| test |
+--------+
| 12c12c |
+--------+

-- Заменить 'aba' в исходной строке на '123'. 'a' встречается дважды, и заменяется только первое вхождение 'a'.
mysql > select translate('abcabc', 'aba', '123') as test;
+--------+
| test |
+--------+
| 12c12c |
+--------+

-- Использование этой функции с repeat() и concat(). Результирующая строка превышает максимальную длину VARCHAR, и возвращается NULL.
mysql > select translate(concat('bcde', repeat('a', 1024*1024-3)), 'a', 'z') as test;
+--------+
| test |
+--------+
| NULL |
+--------+

-- Использование этой функции с length(), repeat() и concat() для вычисления длины результирующей строки.
mysql > select length(translate(concat('bcd', repeat('a', 1024*1024-3)), 'a', 'z')) as test;
+---------+
| test |
+---------+
| 1048576 |
+---------+

См. также