TRANSLATE (Transact-SQL)
适用于:SQL Server 2017 (14.x) 及更高版本 Azure SQL 数据库 Azure SQL 托管实例
在第二个参数中指定的某些字符转换为第三个参数中指定的字符目标集后,返回作为第一个参数提供的字符串。
语法
TRANSLATE ( inputString, characters, translations )
参数
inputString
要搜索的字符串表达式。 inputString 可以是任何字符数据类型(nvarchar、varchar、nchar、char)。
characters
一个包含应替换字符的字符串表达式。 字符可以是任何字符数据类型。
转换
一个包含替换字符的字符串表达式。 转换必须与字符的数据类型和长度相同。
返回类型
返回与 inputString(第二个参数中的字符被替换为第三个参数中的匹配字符)具有相同数据类型的字符表达式。
注解
如果字符和转换表达式长度不同,则 TRANSLATE
将返回错误。 如果任何参数为 NULL,TRANSLATE
将返回 NULL。
TRANSLATE
函数行为类似于使用多个 REPLACE 函数。 但是,TRANSLATE
不会多次替换 inputString
中的任何单个字符。 characters
参数中的单个值可以替换 inputString
中的多个字符。
这不同于多个 REPLACE
函数的行为,因为每个函数调用都将替换所有相关字符,即使以前的嵌套 REPLACE
函数调用已替换它们。
TRANSLATE
始终可以感知 SC 排序规则。 有关增补排序规则的详细信息,请参阅排序规则和 Unicode 支持。
示例
A. 将方括号和大括号替换为圆括号
以下查询将输入字符串中的方括号和大括号替换为圆括号:
SELECT TRANSLATE('2*[3+4]/{7-2}', '[]{}', '()()');
结果集如下。
2*(3+4)/(7-2)
与 REPLACE 等效的调用
在以下 SELECT 语句中,可看到一组对 REPLACE 函数的四个嵌套调用。 此组相当于上述 SELECT 中对 TRANSLATE 函数的一次调用:
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;
结果集如下。
点 | 坐标 |
---|---|
(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;
结果集如下。
已转换 | 已替换 |
---|---|
bcddef | ddddef |