a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 200|回复: 0

[综合] Oracle辅导:Oracle中的Raw类型解释

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
 RAW,近似于CHAR,声明体例RAW(L),L为长度,以字节为单元,作为数据库列最年夜2000,作为变量最年夜32767字节。   LONG RAW,近似于LONG,作为数据库列最年夜存储2G字节的数据,作为变量最年夜32760字节
0 t0 [& k# r2 X  建表操作:8 b9 O) v. F  M& u" f* b% A
  create table raw_test (id number, raw_date raw(10));0 R2 g4 U1 H  X9 z+ u( P; k
  插入raw数据操作:; W3 ]% X' E. Y0 Q
  insert into raw_test values (1, hextoraw('ff'));& `& g# M  ~3 n$ R; ?
  insert into raw_test values (utl_raw.cast_to_raw('051'));( {5 _: R/ Z1 n+ }+ T- ^
  删除表操作:6 K& D2 w0 H' s/ _& O1 U1 l1 R
  drop table raw_test;
  [! T$ L& a6 n4 V& ~2 K7 x, V  当使用HEXTORAW时,会把字符串中数据算作16进制数。而使用UTL_RAW.CAST_TO_RAW时,直接把字符串中每个字符的ASCII码存放到RAW类型的字段中.
" ?, K4 G/ U; x& ^1 i  可以使用dump函数,发芽存储情形:+ c7 o1 ^. m: \
  select id,raw_date, dump(raw_date, 16) dump_raw from raw_test;
7 E+ o" R' W) |* |  D+ f9 H: X2 B  Oracle中RAW和Varchar2常用的两个转换函数
: O+ `7 }- \- K6 u5 q  1. UTL_RAW.CAST_TO_RAW
0 `! u" ~* d9 o  该函数按照缺省字符集(一般为GB2312),将VARCHAR2字符串转换为RAW。3 l3 N' o$ Y* N' d6 E5 J" J
  insert into cmpp_submit (dest_terminal_id,msg_content) values('13001081371',UTL_RAW.CAST_TO_RAW('您好!'));. Q  i' e1 k6 P' ^: c* s/ m
  2. UTL_RAW.CAST_TO_VARCHAR2- _6 c' M$ S& g1 o" g, N7 X" S4 r* M
  该函数按照缺省字符集结(一般为GB2312),将RAW转换为VARCHAR2。3 b: N% a8 e7 y1 Y: l$ |
  select UTL_RAW.CAST_TO_VARCHAR2(msg_content) from cmpp_deliver;0 H, a) q! `* A3 |3 o) G- ?; z! w9 n9 r
  其实RAW和VARCHAR是近似的,只是存储在RAW里的是二进制值,在任何时辰不会做自动的字符集转换,这是RAW和VARCHAR的分歧,RAW只是一种外部类型,其内部存储是VARRAW
% \: [: r9 D* Y5 `2 b6 U& P  VARCHAR的Oracle内部界说是:struct { ub2 len; char arr[n] }8 K) {5 ~/ z* N% Z6 `% n
  VARRAW的ORACLE内部界说是: struct { ub2 len; unsigned char arr[n] }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-21 16:47 , Processed in 0.259654 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表