TRANSLATE 标量函数

TRANSLATE 函数返回一个值,在该值中,字符串表达式中的一个或多个字符可能已转换为其他字符。

字符串表达式:

Read syntax diagramSkip visual syntax diagramTRANSLATE(char-string-exp ,to-string-exp,from-string-exp,' ',pad-char-exp)

图形字符串表达式:

Read syntax diagramSkip visual syntax diagramTRANSLATE(graphic-string-exp ,to-string-exp,from-string-exp ,' ',pad-char-exp)

该模式是 SYSIBM。

此函数将 char-string-expgraphic-string-exp 中也出现在 from-string-exp 中的所有字符转换为 to-string-exp 中的相应字符,或者如果不存在相应字符,那么转换为 pad-char-exp指定的填充字符。

char-string-exp graphic-string-exp
这是要转换的字符串。 该表达式必须返回内置 CHAR、VARCHAR、GRAPHIC、VARGRAPHIC、数字或日期时间数据类型值。 如果值不是 CHAR、VARCHAR、GRAPHIC 或 VARGRAPHIC 数据类型,那么在对此函数求值之前,会隐式地将值强制转换为 VARCHAR。
to-string-exp
要将 char-string-exp 中的某些字符转换为的字符串。

该表达式必须返回内置 CHAR、VARCHAR、GRAPHIC、VARGRAPHIC、数字或日期时间数据类型值。 如果值不是 CHAR、VARCHAR、GRAPHIC 或 VARGRAPHIC 数据类型,那么在对此函数求值之前,会隐式地将值强制转换为 VARCHAR。 如果未指定 to-string-exp 的值,并且数据类型不是图形,那么 char-string-exp 中的所有字符将为单字符,即,字符 a-z 将转换为字符 A-Z,其他字符将转换为其大写形式(如果存在)。 例如,在代码页 850 中,é 映射为 É,但 ÿ 未映射,因为代码页 850 不包括 Ÿ。 如果结果字符的代码点长度与源字符的代码点长度不同,那么不会转换源字符。

字符串表达式
这是一个字符串,如果在 char-string-exp 中找到此字符串,那么会将此字符串转换为 to-string-exp 中的相应字符。

该表达式必须返回内置 CHAR、VARCHAR、GRAPHIC、VARGRAPHIC、数字或日期时间数据类型值。 如果值不是 CHAR、VARCHAR、GRAPHIC 或 VARGRAPHIC 数据类型,那么在对此函数求值之前,会隐式地将值强制转换为 VARCHAR。 如果 from-string-exp 包含重复字符,那么将使用找到的第一个字符,而忽略重复字符。 如果 to-string-exp 的长度超过 from-string-exp,那么将忽略多余字符。 如果指定了 to-string-exp,那么还必须指定 from-string-exp

pad-char-exp
用于填充 to-string-exp 的单个字符 (如果 to-string-expfrom-string-exp 短)该表达式必须返回内置 CHAR、VARCHAR、GRAPHIC、VARGRAPHIC、数字或日期时间数据类型值。 如果值不是 CHAR、VARCHAR、GRAPHIC 或 VARGRAPHIC 数据类型,那么在对此函数求值之前,会隐式地将值强制转换为 VARCHAR。 该值的长度属性必须为零或 1。 若指定零长度字符串,则字符串表达式中未在目标字符串表达式中找到对应字符的字符将从字符串表达式图形字符串表达式中移除。 如果未指定值,那么将采用单字节空白字符。

对于 graphic-string-exp,只有 pad-char-exp 是可选的 (如果未指定值,那么将采用双字节空白字符) ,并且每个自变量 (包括 pad 字符) 必须是图形数据类型。

结果的数据类型和代码页与第一个参数的数据类型和代码页相同。 如果第一个自变量是主变量,那么结果的代码页是数据库代码页。 在非 Unicode 数据库中,如果任何自变量是图形字符串,那么所有自变量都必须是图形字符串 (SQLSTATE 42815)。 在 Unicode 数据库中: 如果第一个自变量是 FOR BIT DATA 字符串,那么没有其他自变量可以是图形字符串 (SQLSTATE 42846); 如果第一个自变量是图形字符串,那么没有其他自变量可以是 FOR BIT DATA 字符串 (SQLSTATE 42846)。

结果的长度属性 和字符串单元 与第一个自变量的长度属性相同。 如果任何参数可以为空值,那么结果可以为空值。 如果任何参数为空值,那么结果为空值。

如果自变量为数据类型 CHAR 或 VARCHAR ,那么 to-string-expfrom-string-exp 中的相应字符必须具有相同的字节数 (长度为零的字符串除外)。 例如,将单字节字符转换为多字节字符或将多字节字符转换为单字节字符是无效的。 pad-char-exp 自变量不能是有效多字节字符的第一个字节 (SQLSTATE 42815)。

使用二进制比较来匹配字符。 不使用数据库整理。

如果仅指定了 char-string-exp ,那么将对单字节字符进行单字节操作,并且多字节字符将保持不变。

示例

对于提供的示例,假定主变量 SITE (VARCHAR (30)) 的值为 "Hanauma Bay"。
  • 示例 1: 以下示例返回值 "HANAUMA BAY"。
       TRANSLATE(:SITE)
  • 示例 2: 以下示例返回值 "Hanauma jay"。
       TRANSLATE(:SITE, 'j', 'B')
  • 示例 3: 以下示例返回值 "Heneume Bey"。
       TRANSLATE(:SITE, 'ei', 'aa')
  • 示例 4 :以下示例返回值 'HAnAumAbA%'。
       TRANSLATE(:SITE, 'bA', 'Bay', '%')
  • 示例 5: 以下示例返回值 "Hana ma ray"。
       TRANSLATE(:SITE, 'r', 'Bu')