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] }