oracle汉字转编码,Oracle中编码与字符转换

函数式: DUMP(expr[,return_fmt[,start_position][,length]]) 基本参数时4个,最少可以填的参数是0个。当完全没有参数时,直接返回null。另外3个参数也都有各自的默认: expr:这个参数是要进行分析的表达式(数字或字符串等,可以是各个类型的) return_fm

函数式:

DUMP(expr[,return_fmt[,start_position][,length]])

基本参数时4个,最少可以填的参数是0个。当完全没有参数时,直接返回null。另外3个参数也都有各自的默认值:

expr:这个参数是要进行分析的表达式(数字或字符串等,可以是各个类型的值)

return_fmt:指返回参数的格式,有5种用法:

1)8:以8进制返回结果的值

2)10:以10进制返回结果的值(默认)

3)16:以16进制返回结果的值

4)17:以单字符的形式返回结果的值

5)1000:以上4种加上1000,表示在返回值中加上当前字符集

start_position:开始进行返回的字符位置

length:需要返回的字符长度

示例

sql> select dump('abc') from dual;

DUMP('ABC')

----------------------

Typ=96 Len=3: 97,98,99

sql> select dump('abc',16) from dual;

DUMP('ABC',16)

----------------------

Typ=96 Len=3: 61,62,63

sql> select dump('abc',1016) from dual;

DUMP('ABC',1016)

--------------------------------------------

Typ=96 Len=3 CharacterSet=ZHS16GBK: 61,62,63

sql> select dump('abc',17,2,2) from dual;

DUMP('ABC',17,2,2

-----------------

Typ=96 Len=3: b,c

结果的格式一般都是类似:Typ=96 Len=3 [CharacterSet=ZHS16GBK]: 61,62,63

type

typ表示当前的expr值的类型。如:2表示NUMBER,96表示CHAR。

CODE TYP

----- ------------------------------

1 VARCHAR2

2 NUMBER

8 LONG

12 DATE

23 RAW

24 LONG RAW

69 ROWID

96 CHAR

112 CLOB

113 BLOB

114 BFILE

180 TIMESTAMP

181 TIMESTAMP WITH TIMEZONE

182 INTERVAL YEAR TO MONTH

183 INTERVAL DAY TO SECOND

208 UROWID

231 TIMESTAMP WITH LOCAL TIMEZONE

len

len表示该值所占用的字节数。

对于汉字,ZHS16GBK编码一个汉字需要2个字节,UTF8需要3个字节。

Value

具体的存储值。返回的数值就是Oracle在自己内部对前面的这个expr值得存储形式。对于非汉字的普通字符串,可以理解为就是它的ASCII码。

SQL> select to_number('3230','xxxx')from dual;

TO_NUMBER('3230','XXXX')

------------------------

12848

SQL> select to_number('3430','xxxx')from dual;

TO_NUMBER('3430','XXXX')

------------------------

13360

SQL> select to_number('3036','xxxx')from dual;

TO_NUMBER('3036','XXXX')

------------------------

12342

SQL>

SQL> select chr(12848)from dual;

CHR(12848)

----------

20

SQL> select chr(13360)from dual;

CHR(13360)

----------

40

SQL> select chr(12342)from dual;

CHR(12342)

----------

06

将CHR(12848)+CHR(13360)+CHR(12342)=204006

utl_raw.cast_to_xxx()作为dump的逆函数

sql>select dump('201201',16) from dual;

dump('201201',16)

---------------------------------------------------------

Typ=96 Len=6: 32,30,31,32,30,31

sql>select utl_raw.cast_to_varchar2('323031323031') value from dual

201201 本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值