UTL_RAW パッケージを使用すると、RAW 型データを操作または取得することができます。
関数/プロシージャ | カテゴリー | 戻り値の型 | 説明 |
---|---|---|---|
CAST_TO_RAW(c IN VARCHAR2) | 関数 | RAW | VARCHAR2 文字列を RAW 値に変換します。 |
CAST_TO_VARCHAR2(r IN RAW) | 関数 | VARCHAR2 | RAW 値を VARCHAR2 文字列に変換します。 |
CONCAT(r1 IN RAW, r2 IN RAW, r3 IN RAW,...) | 関数 | RAW | 複数の RAW 値を単一の RAW 値に連結します。 |
CONVERT(r IN RAW, to_charset IN VARCHAR2, from_charset IN VARCHAR2 | 関数 | RAW | エンコードされたデータをあるエンコード形式から別のエンコード形式に変換し、その結果を RAW 値として返します。 |
LENGTH(r IN RAW) | 関数 | NUMBER | RAW 値の長さを返します。 |
SUBSTR(r IN RAW, pos IN INTEGER, len IN INTEGER) | 関数 | RAW | RAW 値の一部を返します。 |
Oracle 互換 PolarDB データベースでの UTL_RAW の実装は、ネイティブ Oracle と比較すると部分的な実装です。 上記の表にリストされている関数とプロシージャのみがサポートされています。
CAST_TO_RAW
CAST_TO_RAW 関数を使用して、VARCHAR2 文字列を RAW 値に変換します。 関数シグネチャーは次のとおりです。
CAST_TO_RAW(c VARCHAR2)
NULL 以外の値を渡すと、この関数は RAW 値を返します。 NULL 値を渡すと、関数は NULL を返します。
パラメーター
パラメーター | 説明 |
---|---|
c | RAW に変換される VARCHAR2 値。 |
例
次の例は、CAST_TO_RAW 関数が VARCHAR2 文字列を RAW 値に変換する方法を示しています。
DECLARE
v VARCHAR2;
r RAW;
BEGIN
v := 'Accounts';
dbms_output.put_line(v);
r := UTL_RAW.CAST_TO_RAW(v);
dbms_output.put_line(r);
END;
結果セットには、元の文字列のコンテンツと変換された RAW 値が含まれます。
Accounts
\x4163636f756e7473
CAST_TO_VARCHAR2
CAST_TO_VARCHAR2 関数を使用して、RAW データを VARCHAR2 データに変換します。 関数シグネチャーは次のとおりです。
CAST_TO_VARCHAR2(r RAW)
NULL 以外の値を渡すと、関数は VARCHAR2 値を返します。 NULL 値を渡すと、関数は NULL を返します。
パラメーター
パラメーター | 説明 |
---|---|
r | VARCHAR2 値に変換される RAW 値。 |
例
次の例は、CAST_TO_VARCHAR2 関数が RAW 値を VARCHAR2 文字列に変換する方法を示しています。
DECLARE
r RAW;
v VARCHAR2;
BEGIN
r := '\x4163636f756e7473'
dbms_output.put_line(v);
v := UTL_RAW.CAST_TO_VARCHAR2(r);
dbms_output.put_line(r);
END;
結果セットには、元の文字列のコンテンツと変換された RAW 値が含まれます。
\x4163636f756e7473
Accounts
CONCAT
CONCAT 関数を使用して、複数の RAW 値を単一の RAW 値に連結します。 関数シグネチャーは次のとおりです。
CONCAT(r1 RAW, r2 RAW, r3 RAW,...)
関数は RAW 値を返します。 Oracle の実装とは異なり、Oracle 互換 PolarDB データベースの実装は可変長引数関数であり、連結できる値の数を制限しません。
パラメーター
パラメーター | 説明 |
---|---|
r1, r2, r3,... | CONCAT が連結する RAW 値。 |
例
次の例は、CONCAT 関数が複数の RAW 値を単一の RAW 値に連結する方法を示しています。
SELECT UTL_RAW.CAST_TO_VARCHAR2(UTL_RAW.CONCAT('\x61', '\x62', '\x63')) FROM DUAL; concat
-------- abc(1 row)
結果として連結された値は、CAST_TO_VARCHAR2 関数によって VARCHAR2 形式に変換されます。
CONVERT
CONVERT 関数を使用して、文字列をあるエンコード形式から別のエンコード形式に変換し、その結果を RAW 値として返します。 関数シグネチャーは次のとおりです。
CONVERT(r RAW, to_charset VARCHAR2, from_charset VARCHAR2)
関数は RAW 値を返します。
パラメーター
パラメーター | 説明 |
---|---|
r | 変換される RAW 値。 |
to_charset | r が変換されるエンコード形式の名前。 |
from_charset | r の変換元のエンコード形式の名前。 |
例
次の例は、UTL_RAW.CAST_TO_RAW 関数がVARCHAR2 文字列 Accounts を RAW 型の値に変換し、RAW 型の値を UTF8 から LATIN7 に変換してから、値を LATIN7 から UTF8 に変換する方法を示しています。
DECLARE r RAW; v VARCHAR2;BEGIN v:= 'Accounts'; dbms_output.put_line(v);
r:= UTL_RAW.CAST_TO_RAW(v); dbms_output.put_line(r); r:= UTL_RAW.CONVERT(r, 'UTF8', 'LATIN7'); dbms_output.put_line(r); r:= UTL_RAW.CONVERT(r, 'LATIN7', 'UTF8'); dbms_output.put_line(r);
この例では、VARCHAR2 値、RAW 値、および変換された値が返されます。
Accounts
\x4163636f756e7473
\x4163636f756e7473
\x4163636f756e7473
LENGTH
LENGTH 関数を使用して、RAW 値の長さを返します。 関数シグネチャーは次のとおりです。
LENGTH(r RAW)
関数は RAW 値を返します。
パラメーター
パラメーター | 説明 |
---|---|
r | LENGTH が評価する RAW 値。 |
例
次の例は、LENGTH 関数が RAW 値の長さを返す方法を示しています。
SELECT UTL_RAW.LENGTH(UTL_RAW.CAST_TO_RAW('Accounts')) FROM DUAL; length
--------8(1 row)
次の例では、LENGTH 関数を使用して、マルチバイト文字を含む RAW 値の長さを返します。
SELECT UTL_RAW.LENGTH(UTL_RAW.CAST_TO_RAW('独孤求败'));
length
--------
12
(1 row)
SUBSTR
SUBSTR 関数を使用して、RAW 値の部分文字列を返します。 関数シグネチャーは次のとおりです。
SUBSTR (r RAW, pos INTEGER, len INTEGER)
関数は RAW 値を返します。
パラメーター
パラメーター | 説明 |
---|---|
r | 部分文字列が戻される RAW 値。 |
pos | RAW 値内で、返される部分文字列の最初のバイトのが置かれている位置。
|
len | 返される最大バイト数。 |
例
次の例は、SUBSTR 関数が RAW 値の先頭から始まる 3 バイトの部分文字列を取得する方法を示しています。
SELECT UTL_RAW.SUBSTR(UTL_RAW.CAST_TO_RAW('Accounts'), 3, 5) FROM DUAL;
substr-------- count(1 row)
次の例は、SUBSTR 関数が RAW 値の最後から 5 バイト分の部分文字列を取得する方法を示しています。
SELECT UTL_RAW.SUBSTR(UTL_RAW.CAST_TO_RAW('Accounts'), -5 , 3) FROM DUAL;
substr
--------
oun
(1 row)