DUMP函数的输出格式类似:
类型 <[长度]>符号/指数位 [数字数字数字数字]
各位的含义如下:
类型: Number型Type= (类型代码可以从Oracle的文档上查到)
长度:指存储的字节数
符号/指数位
在存储上Oracle对正数和负数分别进行存储转换:
正数加存储(为了避免Null)
负数被减如果总长度小于个字节最后加一个(是为了排序的需要)
指数位换算:
正数指数=符号/指数位 (最高位为是代表正数)
负数指数= 第一字节
从<数字>开始是有效的数据位
从<数字>开始是最高有效位所存储的数值计算方法为
将下面计算的结果加起来
每个<数字位>乘以^(指数N) (N是有效位数的顺序位第一个有效位的N=)
举例说明
SQL> select dump() from dual;
DUMP()Typ= Len=:
<指数>: =
<数字> = *^()
<数字> = *^()
<数字> = *^()
<数字> = *^()
<数字> = *^()
SQL> select dump() from dual;
DUMP()Typ= Len=:
<指数> = (最高位是代表为负数)
<数字> = *^()
<数字> = *^()
<数字> = *^()
<数字> = *^()
<数字> = *^()
()
现在再考虑一下为什么在最后加是为了排序的需要在数据库中实际存储为
而在数据库中实际存储为
可见如果不在最后加上在排序时会出现<的情况