a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 64|回复: 0

[其他] Oracle认证:Oracle中的Raw类型解释

[复制链接]
发表于 2012-8-4 13:41:06 | 显示全部楼层 |阅读模式
 RAW,近似于CHAR,声明体例RAW(L),L为长度,以字节为单元,作为数据库列最年夜2000,作为变量最年夜32767字节。   LONG RAW,近似于LONG,作为数据库列最年夜存储2G字节的数据,作为变量最年夜32760字节
) W4 I, _0 ~+ |& \9 C3 h9 Y  P" ?( L  建表操作:8 f! L1 I6 M+ H- ^# X
  create table raw_test (id number, raw_date raw(10));
- Z( D% H. T; o9 K0 @5 d  插入raw数据操作:: j  x+ S9 e8 ^$ u  |" z/ |6 T) p
  insert into raw_test values (1, hextoraw('ff'));& K, D' b! y8 d* W& B
  insert into raw_test values (utl_raw.cast_to_raw('051'));7 M0 c; O8 U  c7 v* X
  删除表操作:
% B+ u0 f+ x% _# H* @* E1 U  drop table raw_test;0 y, i) ?9 i0 Z; x; N7 g
  当使用HEXTORAW时,会把字符串中数据算作16进制数。而使用UTL_RAW.CAST_TO_RAW时,直接把字符串中每个字符的ASCII码存放到RAW类型的字段中.( J% {4 V9 m9 }$ C/ {
  可以使用dump函数,发芽存储情形:! w# U% A' I$ G: ]  k6 F' \
  select id,raw_date, dump(raw_date, 16) dump_raw from raw_test;
# ~) v0 Q4 c/ [3 a8 A  Oracle中RAW和Varchar2常用的两个转换函数# c0 F1 J3 F. v6 R+ I
  1. UTL_RAW.CAST_TO_RAW
# Q. U5 }8 ~4 ]5 M/ }  该函数按照缺省字符集(一般为GB2312),将VARCHAR2字符串转换为RAW。
0 N- }* Q& R. c! y  insert into cmpp_submit (dest_terminal_id,msg_content) values('13001081371',UTL_RAW.CAST_TO_RAW('您好!'));/ t# j4 o- W7 S3 p+ j" o
  2. UTL_RAW.CAST_TO_VARCHAR2
% t9 M9 w' L6 x+ `# o" Z  该函数按照缺省字符集结(一般为GB2312),将RAW转换为VARCHAR2。' q+ I# N1 e' R8 f8 l9 k
  select UTL_RAW.CAST_TO_VARCHAR2(msg_content) from cmpp_deliver;
* d" J  ]# U+ N+ ]5 V  其实RAW和VARCHAR是近似的,只是存储在RAW里的是二进制值,在任何时辰不会做自动的字符集转换,这是RAW和VARCHAR的分歧,RAW只是一种外部类型,其内部存储是VARRAW, Y$ i2 s: J' e- ^: ?4 n9 X, e
  VARCHAR的Oracle内部界说是:struct { ub2 len; char arr[n] }# S# Y9 S  o* U# T* x4 W+ B  R8 J% j
  VARRAW的ORACLE内部界说是: struct { ub2 len; unsigned char arr[n] }
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 18:32 , Processed in 0.174917 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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