Oracle raw类型
Posted 田灬禾-不忘初心,方得始終
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.RAW 1 FF Typ=23 Len=1: 255 FF 2 616263 Typ=23 Len=3: 97,98,99 616263 abc 3 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类型的主要内容,如果未能解决你的问题,请参考以下文章