#TRANSLATE

translate
TRANSLATE ( expr USING CHAR_CS NCHAR_CS , from_string , to_string )

TRANSLATE函数将expr表示的字符串里的所有的from_string中的每一个字符替换为相应的to_string中的字符,是多个单字符的一对一替换关系,返回一个VARCHAR类型的新字符串。

在TRANSLATE...USING用法中,TRANSLATE函数将依据CHAR_CS/NCHAR_CS,对expr表示的字符串进行字符集转换。

本函数遵循如下规则:

  • 该函数不支持向量化计算。

  • 当using CHAR_CS时返回值为VARCHAR类型。

  • 当using NCHAR_CS时返回值为NVARCHAR类型。

  • 当不带using时,expr为NCLOB/NCHAR/NVARCHAR时,返回值为NVARCHAR类型,其余场景返回值为VARCHAR类型。

expr

  • expr的值须为字符型,或可转换为字符型的其他类型。当expr的值为NULL时,函数返回NULL。

  • expr不支持32000字节以上的XMLTYPE、LOB类型数据。

from_string

  • 要进行替换的字符串,须为字符型,或可转换为字符型的其他类型(LOB、XMLTYPE类型支持隐式转换)。

  • from_string为与expr相同的通用表达式,当from_string的值为NULL时,函数返回NULL。

to_string

  • 按此字符串的值进行一对一替换,须为字符型,或可转换为字符型的其他类型(LOB、XMLTYPE类型支持隐式转换)。

  • to_string为与expr相同的通用表达式,当to_string的值为NULL时,函数返回NULL。

示例(HEAP表)

SELECT TRANSLATE('I am chinese', 'ch', 'ab') TRANSLATE
FROM DUAL;
TRANSLATE
-------------
I am abinese

SELECT TRANSLATE('I am chinese', 'china', 'ab') TRANSLATE
FROM DUAL;
TRANSLATE
-------------
I m abese

SELECT TRANSLATE('我是中国人,我爱中国,China', '中国', 'China') TRANSLATE
FROM DUAL;
TRANSLATE
-----------------------------
我是Ch人,我爱Ch,China

translate_using

  • CHAR_CS表示将expr转换成用数据库字符集编码的字符串,此时函数返回值的类型是VARCHAR。

  • NCHAR_CS表示将expr转换成用国家字符集编码的字符串,此时函数返回值的类型是NVARCHAR。

示例(HEAP表)

SELECT TRANSLATE('Yashan Database' USING CHAR_CS) TRANSLATE
FROM DUAL;
TRANSLATE
-----------------
Yashan Database

SELECT TRANSLATE('崖山数据库' USING NCHAR_CS) TRANSLATE
FROM DUAL;
TRANSLATE
----------------------------------------------------------------
崖山数据库
pdf-btn 下载文档
copy-btn 复制链接