RAW類似於CHAR聲明方式RAW(L)L為長度以字節為單位作為數據庫列最大作為變量最大字節
LONG RAW類似於LONG作為數據庫列最大存儲G字節的數據作為變量最大字節
建表操作:
create table raw_test (id number raw_date raw());
插入raw數據操作:
insert into raw_test values ( hextoraw(ff));
insert into raw_test values (utl_rawcast_to_raw());
刪除表操作:
drop table raw_test;
當使用HEXTORAW時會把字符串中數據當作進制數而使用UTL_RAWCAST_TO_RAW時直接把字符串中每個字符的ASCII碼存放到RAW類型的字段中
可以使用dump函數查詢存儲情況
select idraw_date dump(raw_date ) dump_raw from raw_test;
Oracle中RAW和Varchar常用的兩個轉換函數
UTL_RAWCAST_TO_RAW
該函數按照缺省字符集(一般為GB)將VARCHAR字符串轉換為RAW
insert into cmpp_submit (dest_terminal_idmsg_content) values(UTL_RAWCAST_TO_RAW(您好!));
UTL_RAWCAST_TO_VARCHAR
該函數按照缺省字符集合(一般為GB)將RAW轉換為VARCHAR
select UTL_RAWCAST_TO_VARCHAR(msg_content) from cmpp_deliver;
其實RAW和VARCHAR是類似的只是存儲在RAW裡的是二進制值在任何時候不會做自動的字符集轉換這是RAW和VARCHAR的不同RAW只是一種外部類型其內部存儲是VARRAW
VARCHAR的Oracle內部定義是:struct { ub len; char arr[n] }
VARRAW的ORACLE內部定義是: struct { ub len; unsigned char arr[n] }
From:http://tw.wingwit.com/Article/program/Oracle/201311/16803.html