UTL_RAW内置包提供了用于操作RAW类型数据的函数。
UTL_RAW子程序总览
子程序 | 说明 |
BIT_AND Function | 对RAW r1和RAW r2的值按位进行逻辑“与”运算,并返回RAW类型的计算结果。 |
BIT_COMPLEMENT Function | 对输入的RAW类型数据的值按位进行逻辑“补码”运算,并返回RAW类型的计算结果。 |
BIT_OR Function | 对RAW r1和RAW r2的值按位进行逻辑“或”运算,并返回RAW类型的计算结果。 |
BIT_XOR Function | 对RAW r1和RAW r2的值按位进行逻辑“异或”运算,并返回RAW类型的计算结果。 |
CAST_TO_RAW Function | 将一个VARCHAR2类型的值转为RAW类型的值。 |
CAST_TO_VARCHAR2 Function | 将一个RAW类型的值转为VARCHAR2类型的值。 |
COMPARE Function | 将RAW r1和RAW r2进行比较。 |
CONCAT Function | 将最多12个RAW连接成一个RAW。 |
CONVERT Function | 将RAW类型的输入从字符集from_charset转化到to_charset并返回结果的RAW类型表示。 |
COPIES Function | 返回将输入的RAW类型数据的n个拷贝拼接在一起的结果。 |
LENGTH Function | 返回输入的RAW类型数据的字节长度。 |
OVERLAY Function | 用指定的RAW类型数据覆盖目标RAW类型数据的指定范围。从目标RAW类型数据的pos位置开始,连续len长度的字节。 |
REVERSE Function | 反转RAW类型数据的字节序列。 |
SUBSTR Function | 返回RAW类型输入从pos开始的,len个字节长度的子序列。 |
TRANSLATE Function | 根据from_set和to_set的RAW类型序列翻译输入的RAW类型数据。 |
TRANSLITERATE Function | 根据from_set和to_set的RAW类型序列转换输入的RAW类型数据。 |
XRANGE Function | 返回连续的包含所有有效单字节编码的RAW类型数据。从start_byte指定的RAW类型值开始,到end_byte指定的RAW类型值结束。 |
BIT_AND Function
该函数对RAW r1和RAW r2的值按位进行逻辑“与”运算,并返回RAW类型的计算结果。
语法
UTL_RAW.BIT_AND (
r1 IN RAW,
r2 IN RAW)
RETURN RAW;
参数说明
参数 | 说明 |
r1 | 和r2按位进行逻辑“与”运算的RAW类型数据。 |
r2 | 和r1按位进行逻辑“与”运算的RAW类型数据。 |
返回值
返回值 | 说明 |
RAW | 逻辑“与”计算结果。 |
示例
该示例展示了如何计算两个RAW类型数据的逻辑“与”结果。
SELECT utl_raw.bit_and('1234567890aabbccddeeff','1234567890') FROM dual;
bit_and
------------------------------------------------
\x31323334353637383930616162626363646465656666
(1 row)
BIT_COMPLEMENT Function
该函数对输入的RAW类型数据的值按位进行逻辑“补码”运算,并返回RAW类型的计算结果。
语法
UTL_RAW.BIT_COMPLEMENT (
r IN RAW)
RETURN RAW;
参数说明
参数 | 说明 |
r | 对输入的RAW类型数据按位进行逻辑“补”运算。 |
返回值
返回值 | 说明 |
RAW | 逻辑“补”计算结果。 |
示例
该示例展示了如何对RAW类型数据计算按位逻辑“补”的结果。
SELECT utl_raw.bit_complement('1234567890') FROM dual;
bit_complement
------------------------
\xcecdcccbcac9c8c7c6cf
(1 row)
BIT_OR Function
该函数对RAW r1和RAW r2的值按位进行逻辑“或”运算,并返回RAW类型的计算结果。
语法
UTL_RAW.BIT_OR (
r1 IN RAW,
r2 IN RAW)
RETURN RAW;
参数说明
参数 | 说明 |
r1 | 和r2按位进行逻辑“或”运算的RAW类型数据。 |
r2 | 和r1按位进行逻辑“或”运算的RAW类型数据。 |
返回值
返回值 | 说明 |
RAW | 逻辑“或”计算结果。 |
示例
该示例展示了如何计算两个RAW类型数据的逻辑“或”结果。
SELECT utl_raw.bit_or('\x1234567890','\x1234567890') FROM dual;
bit_or
--------------
\x1234567890
(1 row)
BIT_XOR Function
该函数对RAW r1和RAW r2的值按位进行逻辑“异或”运算,并返回RAW类型的计算结果。
语法
UTL_RAW.BIT_XOR (
r1 IN RAW,
r2 IN RAW)
RETURN RAW;
参数说明
参数 | 说明 |
r1 | 和r2按位进行逻辑“异或”运算的RAW类型数据。 |
r2 | 和r1按位进行逻辑“异或”运算的RAW类型数据。 |
返回值
返回值 | 说明 |
RAW | 逻辑“异或”计算结果。 |
示例
该示例展示了如何计算两个RAW类型数据的逻辑“异或”结果。
SELECT utl_raw.bit_xor('\x1234567890','\x123456') FROM dual;
bit_xor
--------------
\x0000007890
(1 row)
CAST_TO_RAW Function
该函数将一个VARCHAR2类型的值转为RAW类型的值。
语法
UTL_RAW.CAST_TO_RAW (
c IN VARCHAR2)
RETURN RAW;
参数说明
参数 | 说明 |
c | 待转换的VARCHAR2类型数据。 |
返回值
返回值 | 说明 |
RAW | 包含和输入的VARCHAR2类型相同的二进制数据。 |
示例
该示例展示了如何将VARCHAR2类型的数据转为RAW类型数据。
SELECT utl_raw.cast_to_raw('ABCDEFGHIJKLMNOPQRSTUVWXYZ') FROM dual;
cast_to_raw
--------------------------------------------------------
\x4142434445464748494a4b4c4d4e4f505152535455565758595a
(1 row)
CAST_TO_VARCHAR2 Function
该函数将一个RAW类型的输入转为对应的VARCHAR2类型输出。
语法
UTL_RAW.CAST_TO_VARCHAR2 (
r IN RAW)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
r | 待转换的RAW类型数据。 |
返回值
返回值 | 说明 |
VARCHAR2 | 包含和输入的RAW类型数据相同的二进制数据。 |
示例
该示例展示了如何将RAW类型的数据转为VARCHAR2类型的数据。
SELECT utl_raw.cast_to_varchar2(utl_raw.cast_to_raw('ABCDEFGHIJKLMNOPQRSTUVWXYZ')) FROM dual;
cast_to_varchar2
----------------------------
ABCDEFGHIJKLMNOPQRSTUVWXYZ
(1 row)
COMPARE Function
该函数比较两个RAW类型的数据。如果两者长度不同,则根据可选的pad参数在右侧扩展较短的RAW类型数据。
语法
UTL_RAW.COMPARE (
r1 IN RAW,
r2 IN RAW,
pad IN RAW DEFAULT NULL)
RETURN NUMBER;
参数说明
参数 | 说明 |
r1 | 第一个待比较的RAW类型数据,可以是NULL或长度为0。 |
r2 | 第二个待比较的RAW类型数据,可以是NULL或长度为0。 |
pad | (可选参数)用于扩展r1和r2中的较短的一个,默认值是x'00'。 |
返回值
返回值 | 说明 |
NUMBER | 如果r1和r2都是NULL或者相同,返回0;否则, 返回第一个r1和r2不匹配的字节所在的位置。 |
示例
该示例展示了如何对两个RAW类型的数据进行比较。
SELECT utl_raw.compare(NULL, '0102', '01') FROM dual;
compare
---------
2
(1 row)
CONCAT Function
该函数将至多12个RAW类型的输入拼接为一个RAW类型数据。
语法
UTL_RAW.CONCAT (
r1 IN RAW DEFAULT NULL,
r2 IN RAW DEFAULT NULL,
r3 IN RAW DEFAULT NULL,
r4 IN RAW DEFAULT NULL,
r5 IN RAW DEFAULT NULL,
r6 IN RAW DEFAULT NULL,
r7 IN RAW DEFAULT NULL,
r8 IN RAW DEFAULT NULL,
r9 IN RAW DEFAULT NULL,
r10 IN RAW DEFAULT NULL,
r11 IN RAW DEFAULT NULL,
r12 IN RAW DEFAULT NULL)
RETURN RAW;
参数说明
参数 | 说明 |
r1,r2,r3,... | 待拼接的RAW类型输入。 |
返回值
返回值 | 说明 |
RAW | 拼接后的结果 |
示例
该示例展示了如何对多个RAW类型输入进行拼接。
SELECT utl_raw.concat('\xff', '\x00120349', '') FROM dual;
concat
--------------
\xff00120349
(1 row)
CONVERT Function
该函数将RAW类型的输入从字符集from_charset转化到to_charset并返回结果的RAW类型数据。
语法
UTL_RAW.CONVERT (
r IN RAW,
to_charset IN VARCHAR2,
from_charset IN VARCHAR2)
RETURN RAW;
参数说明
参数 | 说明 |
r | 待拼接的RAW类型输入。 |
to_charset | 转换的目标字符集。 |
from_charset | r当前的字符集。 |
返回值
返回值 | 说明 |
RAW | 按指定字符集转换的RAW类型数据。 |
示例
该示例展示了如何将RAW类型数据从一个字符集转换到另一个字符集。
SELECT utl_raw.convert('31323334353637383930', 'UTF8', 'WIN1258');
convert
--------------------------------------------
\x3331333233333334333533363337333833393330
(1 row)
COPIES Function
该函数返回将输入的RAW类型数据的n个拷贝拼接在一起的结果。
语法
UTL_RAW.COPIES (
r IN RAW,
n IN NUMBER)
RETURN RAW;
参数说明
参数 | 说明 |
r | 待拷贝的RAW类型数据。 |
n | 拷贝r的次数。(必须是正数) |
返回值
返回值 | 说明 |
RAW | 输入的RAW类型数据复制n次的结果。 |
示例
该示例展示了如何将RAW类型数据的n个拷贝拼接起来。
SELECT utl_raw.copies('10203040', 5) FROM dual;
copies
------------------------------------------------------------------------------------
\x31303230333034303130323033303430313032303330343031303230333034303130323033303430
(1 row)
LENGTH Function
该函数返回输入的RAW类型数据的字节长度。
语法
UTL_RAW.LENGTH (
r IN RAW)
RETURN NUMBER;
参数说明
参数 | 说明 |
r | 待计算的RAW类型字节序列。 |
返回值
返回值 | 说明 |
NUMBER | RAW类型输入的长度。 |
示例
该示例展示了如何获取一个RAW类型数据的长度。
SELECT utl_raw.length('\x31323334353637383930') FROM dual;
length
--------
10
(1 row)
OVERLAY Function
该函数用指定的RAW类型数据覆盖目标RAW类型数据的指定范围。从目标RAW类型数据的pos位置开始,连续len长度的字节。
语法
UTL_RAW.OVERLAY (
overlay_str IN RAW,
target IN RAW,
pos IN BINARY_INTEGER DEFAULT 1,
len IN BINARY_INTEGER DEFAULT NULL,
pad IN RAW DEFAULT NULL)
RETURN RAW;
参数说明
参数 | 说明 |
overlay_str | 用于进行覆盖的字节序列。 |
target | 待覆盖的目标字节序列。 |
pos | 目标序列中开始覆盖的位置。 |
len | 需要覆盖的字节长度。 |
pad | 当len超过overlay_str的长度或者pos超过target长度的时候使用的填充。 |
返回值
返回值 | 说明 |
RAW | 目标字节序列的覆盖结果。 |
示例
该示例展示了如何对一个目标的字节序列进行覆盖。
SELECT utl_raw.overlay('\xaabbcc', '\x102030', 1, 5, '\x88') FROM dual;
overlay
--------------
\xaabbcc8888
(1 row)
REVERSE Function
该函数反转RAW类型数据的字节序列。
语法
UTL_RAW.REVERSE (
r IN RAW)
RETURN RAW;
参数说明
参数 | 说明 |
r | 待反转的RAW类型数据。 |
返回值
返回值 | 说明 |
RAW | 输入数据的反转结果。 |
示例
该示例展示了如何反转RAW类型数据。
SELECT utl_raw.reverse('123456789012345678901234567890') FROM dual;
reverse
----------------------------------------------------------------
\x303938373635343332313039383736353433323130393837363534333231
(1 row)
SUBSTR Function
该函数返回RAW类型输入从pos开始的,len个字节长度的子序列。
语法
UTL_RAW.SUBSTR (
r IN RAW,
pos IN INTEGER,
len IN INTEGER DEFAULT NULL)
RETURN RAW;
参数说明
参数 | 说明 |
r | 用于提取子串的RAW类型字节序列。 |
pos | r中开始提取的字节位置。 |
len | (可选参数)从pos开始提取的字节长度。 |
返回值
返回值 | 说明 |
RAW | 提取的子串序列。 |
示例
该示例展示了如何从RAW类型的字节序列中提取子串。
SELECT utl_raw.substr('\x1234567890', 1, 2) FROM dual;
substr
--------
\x1234
(1 row)
TRANSLATE Function
该函数根据from_set和to_set的RAW类型序列翻译输入的RAW类型数据。
语法
UTL_RAW.TRANSLATE (
r IN RAW,
from_set IN RAW,
to_set IN RAW)
RETURN RAW;
参数说明
参数 | 说明 |
r | 待翻译的RAW类型字节序列。 |
from_set | 需要翻译的字节值,如果该值在r内。 |
to_set | from_set中的字节值需要被翻译的目标字节值。 |
返回值
返回值 | 说明 |
RAW | 翻译后的字节序列。 |
示例
该示例展示了当前函数如何对字节序列进行翻译。
SELECT utl_raw.translate('01020304050607080901020809', '01020304', '1112') FROM dual;
translate
----------------------------------------------------
\x313131323131313531363137313831393131313231383139
(1 row)
TRANSLITERATE Function
该函数根据from_set和to_set的RAW类型序列转换输入的RAW类型数据。
语法
UTL_RAW.TRANSLITERATE (
r IN RAW,
to_set IN RAW DEFAULT NULL,
from_set IN RAW DEFAULT NULL,
pad IN RAW DEFAULT NULL)
RETURN RAW;
参数说明
参数 | 说明 |
r | 待转换的RAW类型字节序列。 |
to_set | from_set的字节值对应的目标字节值(任意长度)。 |
from_set | 需要转换的字节值,如果该值在r内(任意长度)。 |
pad | 当to_set比from_set短的时候使用的单字节填充值。 |
返回值
返回值 | 说明 |
RAW | 转换后的字节序列。 |
示例
该示例展示了当前函数如何对字节序列进行转换。
SELECT utl_raw.transliterate('01020304050607080901020809', '1112', '01020304', '0a') FROM dual;
transliterate
--------------------------------------------------------
\x3131313231303130313531363137313831393131313231383139
(1 row)
XRANGE Function
该函数返回连续的包含所有有效单字节编码的RAW类型数据。从start_byte指定的RAW类型值开始,到end_byte指定的RAW类型值结束。
语法
UTL_RAW.XRANGE (
start_byte IN RAW DEFAULT NULL,
end_byte IN RAW DEFAULT NULL)
RETURN RAW;
参数说明
参数 | 说明 |
start_byte | 结果序列的起始字节码值。默认值为x'00'。 |
end_byte | 结果序列的结束字节码值。默认值为x'FF'。 |
返回值
返回值 | 说明 |
RAW | 连续的单字节序列。 |
示例
该示例展示了如何返回连续的包含指定的有效单字节编码的RAW类型数据。
SELECT utl_raw.xrange('', '\x20') FROM dual;
xrange
----------------------------------------------------------------------
\x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20
(1 row)