1.oracle的RAW类型

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

当使用HEXTORAW时,会把字符串中数据当作16进制数。
  而使用UTL_RAW.CAST_TO_RAW时,直接把字符串中每个字符的ASCII码存放到RAW类型的字段中.
  
  其实RAW和VARCHAR是类似的,只是存储在RAW里的是二进制值,在任何时候不会做自动的字符集转换,这是RAW和VARCHAR的不同,RAW只是一种外部类型,其内部存储是VARRAW;
  VARCHAR的Oracle内部定义是:struct { ub2 len; char arr[n] }
  VARRAW的ORACLE内部定义是: struct { ub2 len; unsigned char arr[n] }

2.mysql对应的的BLOB类型

mysql的函数
HEX() 函数:返回十六进制值的字符串表示形式。注意:并不是转化为十六进制数,而是转化为字符串
UNHEX() 函数: 每对十六进制数字转化为一个字符。
RAW是未处理的二进制数据 数据库查出来显示乱码很正常 但是我们要工作要查看数据

更多推荐

Oracle 数据库RAW类型问题