Замена символов строки
Функция
Замена указанных символов строки другими символами.
Спецификация
::=
Общие правила
-
<Строка>
,<подстрока1>
,<подстрока2>
должны иметь типы данных:CHAR
,VARCHAR
,NCHAR
,NCHAR VARYING
. -
Типы данных
<строки>
,<подстроки1>
и<подстроки2>
должны быть приводимыми. -
Длина
<подстроки1>
,<подстроки2>
не должна быть более 4000. -
Окончательная длина
<строки>
не должна быть более 4000. -
<Подстрока1>
задает набор заменяемых в<строке>
символов. -
<Подстрока2>
задает новые значения заменяемых символов.Примечание
Символы пробела, заданные в конце символьных выражений
<строка>
,<подстрока1>
,<подстрока2>
усекаются. Чтобы они принимались во внимание, необходимо использовать явное преобразование типа данных или не задавать пробелы в конце этих выражений.Например, при выполнении данного запроса символ пробела не учитывается:
select translate('111-111 22','- ',''); | 111111 22 |
а в этих запросах – учитывается:
select translate('111-111 22',' -',''); | 11111122 |
select translate('111-111 22',cast '- ' as varchar,''); | 11111122 |
-
Все аргументы функции могут быть заданы
, который должен содержать спецификацию типа данных параметра.select translate(? (char(20)), ? (char(2)), ? (char(2))); 11 22 311 55 12 ab |aa bb 3aa 55 |
Возвращаемое значение
-
Исходная
<строка>
, в которой каждый символ из<подстроки1>
заменен на соответствующий ему символ из<подстроки2>
. Например, если<подстрока1>='ac'
, а<подстрока2>='12'
, то каждый символ 'a' в исходной<строке>
будет заменён на '1', а каждый символ 'c' в исходной<строке>
– на '2'. -
Если
<подстрока1>
длиннее<подстроки 2>
, то все ее лишние символы удаляются из исходной<строки>
, поскольку для них нет соответствующих символов в<подстроке2>
. -
Результирующая строка возвращается без концевых пробелов.
-
Если один из аргументов имеет значение NULL, результат будет NULL.
-
Если аргумент
<строка>
имеет нулевую длину, возвращается пустая строка.select translate('','1','2');
-
Функция
TRANSLATE
теперь утраивает длину входного аргумента для записи ответа только для MBCS кодировок.
Примеры
-
Замена всех прописных букв строчными.
select translate(make,make, lower(make)) from auto; ford alpine …
-
Исправление текста на кириллице, ошибочно набранного в латинице.
select translate('ошибка ddjlf', 'qwertyuiop[]asdfghjkl;"zxcvbnm,.', 'йцукенгшщзхъфывапролджэячсмитьбю'); |ошибка ввода |
-
Удаление всех гласных из текста.
select translate(make, 'EYUIOAJ','') from auto; FRD LPN MRCN MTRS MSRT …
-
Функция translate является расширением функции replace.
Запрос
select translate('abcdaefbgh', 'ab','12'); 12cd1ef2gh аналогичен запросу select replace (replace('abcdaefbgh', 'a','1'), 'b','2'); 12cd1ef2gh