Oracle中的Raw类型解释
CAST
將某種數(shù)據(jù)類型的表達(dá)式顯式轉(zhuǎn)換為另一種數(shù)據(jù)類型。
建表操作:?
create table raw_test (id number, raw_date raw(10));?
插入raw數(shù)據(jù)操作:?
insert into raw_test values (1, hextoraw('ff'));?
insert into raw_test values (utl_raw.cast_to_raw('051'));?
刪除表操作:?
drop table raw_test;?
當(dāng)使用HEXTORAW時(shí),會(huì)把字符串中數(shù)據(jù)當(dāng)作16進(jìn)制數(shù)。而使用UTL_RAW.CAST_TO_RAW時(shí),直接把字符串中每個(gè)字符的ASCII碼存放到RAW類型的字段中.?
可以使用dump函數(shù),查詢存儲(chǔ)情況:?
select id,raw_date, dump(raw_date, 16) dump_raw from raw_test;?
Oracle中RAW和Varchar2常用的兩個(gè)轉(zhuǎn)換函數(shù)???????????????????????????????????
1. UTL_RAW.CAST_TO_RAW?
該函數(shù)按照缺省字符集(一般為GB2312),將VARCHAR2字符串轉(zhuǎn)換為RAW。?
insert into cmpp_submit (dest_terminal_id,msg_content) values('13001081371',UTL_RAW.CAST_TO_RAW('您好!'));?
2. UTL_RAW.CAST_TO_VARCHAR2?
該函數(shù)按照缺省字符集合(一般為GB2312),將RAW轉(zhuǎn)換為VARCHAR2。?
select UTL_RAW.CAST_TO_VARCHAR2(msg_content) from cmpp_deliver;?
其實(shí)RAW和VARCHAR是類似的,只是存儲(chǔ)在RAW里的是二進(jìn)制值,在任何時(shí)候不會(huì)做自動(dòng)的字符集轉(zhuǎn)換,這是RAW和VARCHAR的不同,RAW只是一種外部類型,其內(nèi)部存儲(chǔ)是VARRAW?
VARCHAR的Oracle內(nèi)部定義是:struct { ub2 len; char arr[n] }?
VARRAW的ORACLE內(nèi)部定義是: struct { ub2 len; unsigned char arr[n] }
hextoraw:
英文介紹:HEXTORAW converts char containing hexadecimal digits in the CHAR, VARCHAR2, NCHAR, or?
?
NVARCHAR2 character set to a raw value.
This function does not support CLOB data directly. However, CLOBs can be passed in as arguments?
?
through implicit data conversion。
例子:
select hextoraw('1a') from dual
輸出:1A
這里輸入的參數(shù)必須要符合16進(jìn)制的格式,比如:1A,a1等,從前到后都是兩個(gè)字符組成一個(gè)十六進(jìn)制數(shù),若輸入?yún)?shù)為奇數(shù)個(gè)字符,則函數(shù)會(huì)在最前面添加0,比如:
select hextoraw('1ca') from dual;
輸出:01CA。
?
UTL_RAW.CAST_TO_RAW
英文介紹:
UTL_RAW.CAST_TO_RAW converts a value of data type VARCHAR2 into a raw value with the same number of bytes. ?The input value is treated as if it were composed of single 8-bit bytes, not characters. ?Multibyte character boundaries are ignored. ?The data is not modified in any way, it is only changed to data type RAW.
例子:
select UTL_RAW.CAST_TO_RAW('ABC') from dual;
輸出:414243
解釋:輸出的是輸入字符串的十六進(jìn)制的值
總結(jié)
以上是生活随笔為你收集整理的Oracle中的Raw类型解释的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 64位windows7配置32位odbc
- 下一篇: Oracle 数据类型及存储方式