Замена символов строки
Функция
Замена указанных символов строки другими символами.
Спецификация
::=
Общие правила
-
< Строка >
,< подстрока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 |
-
Все аргументы функции могут быть заданы
< SQL-параметром >
, который должен содержать спецификацию типа данных параметра.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