首批通过分布式安全可靠测评,为关键业务系统打造
TRANSLATE
更新时间:2026-07-15 20:56:58
UTL_RAW.TRANSLATE 是一个字节级翻译函数,用于对 RAW 类型的数据进行逐字节的转换。
语法
UTL_RAW.TRANSLATE (
r IN RAW,
from_set IN RAW,
to_set IN RAW
) RETURN RAW;
参数解释
| 参数 | 解释 |
|---|---|
| r | 源字节串。 |
| from_set | 要查找和替换的字节集。 |
| to_set | 替换目标字节集。 |
使用说明
逐字节扫描源字节串 r 的值:
- 如果该值在
from_set中,则用to_set中对应位置的字节替换。 - 如果字节不在
from_set中,则直接复制到结果中。 - 如果
from_set中的字节在to_set中没有对应项,则该字节被删除。 - 如果
from_set比to_set长,多余的from_set字节没有对应翻译,则匹配的字节被删除。 - 如果
to_set比from_set长,则多余的to_set字节被忽略。 - 如果
from_set中有重复字节,重复的字节将被忽略(同一个字节第二次在from_set出现则忽略其对应关系)。 - 三个参数中有
NULL值或者长度为0就报错ValueError。 - 字节串长度为奇数,在处理时最左边进行补
0处理。
使用示例
执行如下命令,使用 UTL_RAW.TRANSLATE 函数,将输入字节序列中的特定字符全部替换为 F,其他字符保留原样。
obclient> SELECT UTL_RAW.TRANSLATE('1236567812125612344434341234567890ABAA1234','12AA34','FFFFFF') FROM dual;
返回结果如下:
+-----------------------------------------------------------------------------------+
| UTL_RAW.TRANSLATE('1236567812125612344434341234567890ABAA1234','12AA34','FFFFFF') |
+-----------------------------------------------------------------------------------+
| FF365678FFFF56FFFF44FFFFFFFF567890ABFFFFFF |
+-----------------------------------------------------------------------------------+