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内で2回目に現れた場合、その対応関係は無視されます)。- 3つのパラメータのいずれかに
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 |
+-----------------------------------------------------------------------------------+