首页 > 代码库 > Oracle raw类型

Oracle raw类型

RAW(size):长度为size字节的原始二进制数据,size的最大值为2000字节;
  RAW类型好处:在网络中的计算机之间传输 RAW 数据时,或者使用 Oracle 实用程序将 RAW 数据从一个数据库移到另一个数据库时,Oracle 服务器不执行字符集转换。
  RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。
  LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节;

操作:  
create table raw_test (id number, raw_date raw(10)); insert into raw_test values (1, hextoraw(ff));  insert into raw_test values (2,UTL_RAW.cast_to_raw(abc));  insert into raw_test values (3,UTL_RAW.cast_to_raw(你好你你的));SELECT r.*,DUMP(r.raw_date),RAWTOHEX(r.raw_date),UTL_RAW.CAST_TO_VARCHAR2(r.raw_date) FROM raw_test r;-----------------------------------------------------------------------------ID    RAW_DATE    DUMP(R.RAW_DATE)        RAWTOHEX(R.RAW_DATE)    UTL_RAW.CAST_TO_VARCHAR2(R.RAW1      FF        Typ=23 Len=1: 255        FF                  2      616263      Typ=23 Len=3: 97,98,99     616263               abc3    C4E3BAC3C4E3C4E3B5C4    Typ=23 Len=10: 196,227,186,195,196,227,196,227,181,196    C4E3BAC3C4E3C4E3B5C4    你好你你的

这里用到了几个函数:

  1. UTL_RAW.CAST_TO_RAW:该函数按照缺省字符集(一般为GB2312),将VARCHAR2字符串转换为RAW,直接把字符串中每个字符的ASCII码存放到RAW类型的字段中。

  2.UTL_RAW.CAST_TO_VARCHAR2:该函数按照缺省字符集合(一般为GB2312),将RAW转换为VARCHAR2。

  3.HEXTORAW(string):当使用HEXTORAW时,会把字符串中数据当作16进制数,String中的每两个字符表示了结果RAW中的一个字节。

  4.RAWTOHEX(rawvalue):将RAW类数值rawvalue转换为一个相应的十六进制表示的字符串. rawvalue中的每个字节都被转换为一个双字节的字符串. RAWTOHEX和HEXTORAW是两个相反的函数.

 
其实RAW和VARCHAR是类似的,只是存储在RAW里的是二进制值,在任何时候不会做自动的字符集转换,这是RAW和VARCHAR的不同,RAW只是一种外部类型,其内部存储是VARRAW
  

Oracle raw类型