TRANSLATE (Transact-SQL)
Область применения: SQL Server 2017 (14.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure
Возвращает строку, указанную в качестве первого аргумента, после преобразования символов, указанных во втором аргументе, в конечный набор символов, указанный в третьем аргументе.
Синтаксис
TRANSLATE ( inputString, characters, translations )
Аргументы
inputString
Строковое выражение для поиска. inputString может быть любого символьного типа данных (nvarchar, varchar, nchar, char).
characters
Строковое выражение, содержащее символы, которые следует заменить. characters может быть любого символьного типа данных.
translations
Строковое выражение, содержащее заменяющие символы. translations должен иметь один и тот же тип данных и длину, что и characters.
Типы возвращаемых данных
Возвращает символьное выражение того же типа даты, что и inputString, в котором символы из второго аргумента заменены соответствующими символами из третьего аргумента.
Замечания
TRANSLATE
возвращает ошибку, если выражения characters и translations имеют разную длину. TRANSLATE
возвращает значение NULL, если любой из аргументов имеет значение NULL.
Поведение функции TRANSLATE
аналогично использованию нескольких функций REPLACE. TRANSLATE
, однако, не заменяет отдельные символы в inputString
более одного раза. Одно значение в параметре characters
может заменять несколько символов в inputString
.
Это не похоже на поведение нескольких функций REPLACE
, так как каждый вызов функции будет заменять все соответствующие символы, даже если они были заменены предыдущим вызовом вложенной функции REPLACE
.
TRANSLATE
всегда учитывает параметры сортировки SC. Подробные сведения о дополнительных параметрах сортировки см. в разделе Поддержка параметров сортировки и Юникода.
Примеры
А. Замена квадратных и фигурных скобок обычными
Следующий запрос заменяет квадратные и фигурные скобки во входной строке на круглые:
SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()');
Вот результирующий набор.
2*(3+4)/(7-2)
Эквивалентные вызовы функции REPLACE
В следующей инструкции SELECT есть группа из четырех вложенных вызовов функции REPLACE. Эта группа эквивалентна одному вызову функции TRANSLATE в предыдущей инструкции SELECT:
SELECT
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
'2*[3+4]/{7-2}',
'[',
'('
),
']',
')'
),
'{',
'('
),
'}',
')'
);
B. Преобразование точек GeoJSON в WKT
GeoJSON — это формат для кодирования различных структур географических данных. С помощью функции TRANSLATE
разработчики могут легко преобразовывать точки GeoJSON в формат WKT, и наоборот. Следующий запрос заменяет квадратные и фигурные скобки во входной строке на обычные:
SELECT TRANSLATE('[137.4,72.3]' , '[,]', '( )') AS Point,
TRANSLATE('(137.4 72.3)' , '( )', '[,]') AS Coordinates;
Вот результирующий набор.
Point | Координаты |
---|---|
(137.4 72.3) | [137.4,72.3] |
C. Используйте функцию TRANSLATE
SELECT TRANSLATE('abcdef','abc','bcd') AS Translated,
REPLACE(REPLACE(REPLACE('abcdef','a','b'),'b','c'),'c','d') AS Replaced;
Вот результирующий набор.
Переведенный текст | Replaced |
---|---|
bcddef | ddddef |