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 |
+---------+