#TRANSLATE
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
----------------------------------------------------------------
崖山数据库