UTL_RAW

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)