会计考友 发表于 2012-8-4 13:54:49

Oracle辅导:Oracle中的Raw类型解释

 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 }
  VARRAW的ORACLE内部界说是: struct { ub2 len; unsigned char arr }
页: [1]
查看完整版本: Oracle辅导:Oracle中的Raw类型解释