<b>Oracle中的Raw范例注释</b>[Oracle防范]
本文“<b>Oracle中的Raw范例注释</b>[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
RAW,近似于CHAR,声明方法RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节.
LONG RAW,近似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节
建表操作:
create table raw_test (id number, raw_date raw(10));
插入raw数据操作:
insert into raw_test values (1, hextoraw('ff'));
insert into raw_test values (utl_raw.cast_to_raw('051'));
删除表操作:
drop table raw_test;
当利用HEXTORAW时,会把字符串中数据当作16进制数.而利用UTL_RAW.CAST_TO_RAW时,直接把字符串中每个字符的ASCII码存放到RAW范例的字段中.
可以利用dump函数,查询存储情形:
select id,raw_date, dump(raw_date, 16) dump_raw from raw_test;
Oracle中RAW和Varchar2常用的两个转换函数
1. UTL_RAW.CAST_TO_RAW
该函数按照缺省字符集(普通为GB2312),将VARCHAR2字符串转换为RAW.
insert into cmpp_submit (dest_terminal_id,msg_content) values('13001081371',UTL_RAW.CAST_TO_RAW('您好!'));
2. UTL_RAW.CAST_TO_VARCHAR2
该函数按照缺省字符调集(普通为GB2312),将RAW转换为VARCHAR2.
select UTL_RAW.CAST_TO_VARCHAR2(msg_content) from cmpp_deliver;
其实RAW和VARCHAR是近似的,只是存储在RAW里的是二进制值,在任什么时刻候不会做自动的字符集转换,这是RAW和VARCHAR的差别,RAW只是一种外部范例,其内部存储是VARRAW
VARCHAR的Oracle内部定义是:struct { ub2 len; char arr[n] }
VARRAW的ORACLE内部定义是: struct { ub2 len; unsigned char arr[n] }
以上是“<b>Oracle中的Raw范例注释</b>[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |