写点什么

YashanDB TRANSLATE 函数

作者:YashanDB
  • 2025-08-08
    广东
  • 本文字数:1860 字

    阅读完需:约 6 分钟

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') TRANSLATEFROM DUAL;TRANSLATE-------------I am abinese
SELECT TRANSLATE('I am chinese', 'china', 'ab') TRANSLATEFROM DUAL;TRANSLATE-------------I m abese
SELECT TRANSLATE('我是中国人,我爱中国,China', '中国', 'China') TRANSLATEFROM DUAL;TRANSLATE-----------------------------我是Ch人,我爱Ch,China
复制代码

Copied!

translate_using

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

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

示例(HEAP 表)

SELECT TRANSLATE('Yashan Database' USING CHAR_CS) TRANSLATEFROM DUAL;TRANSLATE-----------------Yashan Database
SELECT TRANSLATE('崖山数据库' USING NCHAR_CS) TRANSLATEFROM DUAL;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') TRANSLATEFROM DUAL;TRANSLATE-------------I am abinese
SELECT TRANSLATE('I am chinese', 'china', 'ab') TRANSLATEFROM DUAL;TRANSLATE-------------I m abese
SELECT TRANSLATE('我是中国人,我爱中国,China', '中国', 'China') TRANSLATEFROM DUAL;TRANSLATE-----------------------------我是Ch人,我爱Ch,China
复制代码

Copied!

translate_using

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

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

示例(HEAP 表)

SELECT TRANSLATE('Yashan Database' USING CHAR_CS) TRANSLATEFROM DUAL;TRANSLATE-----------------Yashan Database
SELECT TRANSLATE('崖山数据库' USING NCHAR_CS) TRANSLATEFROM DUAL;TRANSLATE----------------------------------------------------------------崖山数据库
复制代码


用户头像

YashanDB

关注

全自研国产新型大数据管理系统 2022-02-15 加入

还未添加个人简介

评论

发布
暂无评论
YashanDB TRANSLATE函数_YashanDB_InfoQ写作社区