语法:
DUMP(expr,[return_fmt,[start_position,[length]]])
expr指定各种类型的字符串或者表列名,如果expr为空(null),则函数返回值为NULL。
return_fmt参数指定返回值的格式,并且有下面几个值可以使用:
8 返回八进制值
10 返回十进制值
16 返回十六进制值
17 返回单个字符
默认情况下,dump是不返回字符集的,如果需要返回字符集的话,在指定return_fmt时,需要加上1000。如:若需要返回8进制值,则return_fmt需要写成1008;若需要返回10进制值,则return_fmt需要写成1010等。
start_position和length两个参数共同决定返回internal representation中的那个部分的值,默认情况下是以十进制返回整个internal representation。
有一点需要注意:
This function does not support CLOB data directly.However,CLOBs can be passed in as arguments through implicit data conversion.
返回格式:
类型 长度]>,符号/指数位 [数字1,数字2,数字3,......,数字20],如:
Typ=96 Len=6 CharacterSet=ZHS16GBK: 150,165,156,157,154,144
Examples:
1、返回字符串ligle的10进制和16进制值(16进制值需要返回字符集):
SQL> select dump('ligle',10) from dual;
DUMP('LIGLE',10)
---------------------------------
Typ=96 Len=5: 108,105,103,108,101
SQL> select dump('ligle',1016) from dual;
DUMP('LIGLE',1016)
--------------------------------------------------
Typ=96 Len=5 CharacterSet=ZHS16GBK: 6c,69,67,6c,65
2、返回字符串Ligle WANG的单个字符(sigle characters)
SQL> select dump('Ligle WANG',17) from dual;
DUMP('LIGLEWANG',17)
----------------------------------
Typ=96 Len=10: L,i,g,l,e, ,W,A,N,G
Typ是类型,96表示CHAR,其他的还有:
0 VARCHAR2
1 NUMBER
8 LONG
12 DATE
23 RAW
24 LONG RAW
69 ROWID
96 CHAR
… …
Len表示长度,就是该字符所占的字节数。
CharacterSet表示字符集。
符号/指数位
对于非汉字的字符,如英文字母,其即可认为是对应的ASCII码值,而对于汉字的存储,现在也不太清楚其机制。
对于number类型的存储形式,可以参考eygle的文章(How Oracle Store Number internal?)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25834554/viewspace-709194/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25834554/viewspace-709194/