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)