1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

对Oracle Raw类型的详细解剖

2022-11-22 | 数据库 | admin | 588°c
A+ A-

以下的文章主要是对Oracle Raw类型的详细解释,我们首先是从RAW的概念讲起的,其不论从那方面都类似于CHAR,其声明的方式为RAW(L),它以L为长度,以相关的字节为单位,作为数据库列最大2000,作为变量最大32767字节。

LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节

建表操作:

createtableraw_test(idnumber,raw_dateraw(10));

插入raw数据操作:

insertintoraw_testvalues(1,hextoraw('ff')); 
insertintoraw_testvalues(utl_raw.cast_to_raw('051')); 

删除表操作:

droptableraw_test;

当使用HEXTORAW时,会把字符串中数据当作16进制数。而使用UTL_RAW.CAST_TO_RAW时,直接把字符串中每个字符的ASCII码存放到Oracle RAW类型的字段中.

可以使用dump函数,查询存储情况:

selectid,raw_date,dump(raw_date,16)dump_rawfromraw_test;

Oracle中RAW和Varchar2常用的两个转换函数

1. UTL_RAW.CAST_TO_RAW

该函数按照缺省字符集(一般为GB2312),将VARCHAR2字符串转换为RAW。

insertintocmpp_submit(dest_terminal_id,msg_content)
values('13001081371',UTL_RAW.CAST_TO_RAW('您好!'));

2. UTL_RAW.CAST_TO_VARCHAR2

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

selectUTL_RAW.CAST_TO_VARCHAR2(msg_content)fromcmpp_deliver;

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

Oracle内部定义是:

struct{ub2len;chararr[n]}

VARRAW的ORACLE内部定义是:

struct{ub2len;unsignedchararr[n]}

本文来源:1818IP

本文地址:https://www.1818ip.com/post/10995.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。