RAW類型是Oracle中用於儲存位串的一種資料類型,類似於CHAR,使用RAW(L) 方式聲明,最長可達32767位元組。 系統提供了一個SYS.utl_raw工具包用於RAW類型的操作,常用的函數如下:
1、長度計算函數,得到一個raw類型變數的長度,單位為位元組 FUNCTION length(r IN RAW ) RETURN NUMBER ; 如: select utl_raw.length( '12344321' ) from dual; 結果為:4
2、拼接函數,用於拼接兩個raw類型變數 FUNCTION 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 ; 如: select utl_raw.concat( '12' , '34' ) from dual; 結果為:1234
3、擷取子串函數 FUNCTION substr (r IN RAW , pos IN BINARY_INTEGER , len IN BINARY_INTEGER DEFAULT NULL ) RETURN RAW ;
如: select utl_raw.substr( '12344321' , 2 , 1 ) from dual; 結果為:34
4、位操作函數 FUNCTION bit_and(r1 IN RAW , r2 IN RAW ) RETURN RAW ; FUNCTION bit_or(r1 IN RAW , r2 IN RAW ) RETURN RAW ; FUNCTION bit_xor(r1 IN RAW , r2 IN RAW ) RETURN RAW ; 如: select utl_raw.bit_and( '12344321' , '0f' ) from dual; select utl_raw.bit_or( '12344321' , '0f' ) from dual; select utl_raw.bit_xor( '12344321' , '0f' ) from dual; 結果分別為: 02344321、1F344321、1D344321
5、給指定位元組賦值 FUNCTION overlay(overlay_str IN RAW , target IN RAW , pos IN BINARY_INTEGER