转载:[url]http://www.eygle.com/archives/2005/12/how_oracle_stor.html[/url] 作者:eygle
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
DUMP函数的输出格式类似:
类型 <[长度]>,符号/指数位 [数字1,数字2,数字3,......,数字20]
各位的含义如下:
1.类型: Number型,Type=2 (类型代码可以从Oracle的文档上查到)
2.长度:指存储的字节数
3.符号/指数位
在存储上,Oracle对正数和负数分别进行存储转换:
正数:加1存储(为了避免Null)
负数:被101减,如果总长度小于21个字节,最后加一个102(是为了排序的需要)
指数位换算:
正数:指数=符号/指数位 - 193 (最高位为1是代表正数)
负数:指数=62 - 第一字节
4.从<数字1>开始是有效的数据
从<数字1>开始是最高有效位,所存储的数值计算方法为:
将下面计算的结果加起来:
每个<数字位>乘以100^(指数-N) (N是有效位数的顺序位,第一个有效位的N=0)
5、举例说明
SQL> select dump(123456.789) from dual;
DUMP(123456.789)-------------------------------Typ=2 Len=6: 195,13,35,57,79,91
<指数>:    195 - 193 = 2
<数字1>     13 - 1     = 12 *100^(2-0) 120000
<数字2>     35 - 1     = 34 *100^(2-1) 3400
<数字3>     57 - 1     = 56 *100^(2-2) 56
<数字4>     79 - 1     = 78 *100^(2-3) .78
<数字5>     91 - 1     = 90 *100^(2-4) .009
                             123456.789
SQL> select dump(-123456.789) from dual;
DUMP(-123456.789)----------------------------------Typ=2 Len=7: 60,89,67,45,23,11,102
<指数>      62 - 60 = 2(最高位是0,代表为负数)
<数字1> 101 - 89 = 12 *100^(2-0) 120000
<数字2> 101 - 67 = 34 *100^(2-1) 3400
<数字3> 101 - 45 = 56 *100^(2-2) 56
<数字4> 101 - 23 = 78 *100^(2-3) .78
<数字5> 101 - 11 = 90 *100^(2-4) .009
                               123456.789(-)
现在再考虑一下为什么在最后加102是为了排序的需要,-123456.789在数据库中实际存储为
60,89,67,45,23,11
而-123456.78901在数据库中实际存储为
60,89,67,45,23,11,91
可见,如果不在最后加上102,在排序时会出现-123456.789<-123456.78901的情况。

转载于:https://blog.51cto.com/airlgc/46807

oracle dump函数相关推荐

  1. Oracle 字符串函数

    Oracle Ascii()函数 在Oracle中,Ascii()函数可以返回代表指定字符的数字值代码,那么Ascii()函数具体该如何实用呢? Ascii()函数语法 ASCII( single_c ...

  2. 在Oracle 数据类型中如何使用dump函数

    http://database.51cto.com/art/201004/192369.htm 本文主要是介绍Oracle 数据类型中的相关数据类型的特点的介绍,以及在Oracle 数据类型中如何使用 ...

  3. Oracle Dump 分析学习总结

    简单分析dump出来的oracle数据块 一.dump数据块 oracle的rowid中包含着这条数据对象号,数据文件号,数据文件中的块号以及块中的行号,并且这些都 可以通过dbms_rowid这个包 ...

  4. 从DUMP函数说开去

        因为最近研究字符集,所以对于Oracle内部的一些存储模式产生了一些兴趣,据说DUMP这个函数的功能非常强大,所以专门研究了一下.当然研究的都比较初级,只是了解一下.具体哪里可以用到暂时还不知 ...

  5. oushuDB之oracle兼容函数orafunc

    文章目录 参考 测试的软件版本 安装方法 函数功能解析 参考 自己博客 测试的软件版本 PostgreSQL 8.2.15 (OushuDB 3.4.0.0) (Apache HAWQ 2.4.0.0 ...

  6. oracle字符串函数(转)

    oracle字符串函数[@more@] ASCII Get The ASCII Value Of A Character ASCII(ch VARCHAR2 CHARACTER SET ANY_CS) ...

  7. Oracle常用函数大全(应有尽有)——其他函数

    Oracle的函数很多,在这里整理一下,方便使用. Oracle数值型函数 Oracle字符型函数 Oracle日期函数 Oracle转换函数 Oracle聚组函数 Oracle分析函数 DUMP(w ...

  8. oracle各种函数的使用

    1. 时间转换      to_Char(time_feild,"time_pattern");      to_Timestamp(time_feild,"time_p ...

  9. Oracle round函数是什么意思?怎么运用?

    如何使用 Oracle Round 函数 (四舍五入) 描述 : 传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果. SELECT ROUND( number, [ decimal_p ...

最新文章

  1. SAP PM 初级系列14 - 维修工单的凭证流
  2. PAT甲级1098 Insertion or Heap Sort:[C++题解]堆排序和插入排序
  3. Windows10怎么在当前目录,打开cmd命令窗口?
  4. NeurIPS 2021 | 通过寻找平坦最小值,克服小样本增量学习中的灾难性遗忘
  5. boost::mpi模块实现传输数据类型的骨架和内容的通信器的测试
  6. 22_2D函数优化实例
  7. 在linux命令下导出导入.sql文件的方法
  8. reactor多线程模型_网络编程模型的演进之路
  9. hasp运行不成功_提问:程序无报错或警告,但总是运行不成功,会卡住没反应...
  10. emacs java自动import,在Java模式如何我配置Emacs,这样就不会自动对齐方法参数
  11. Linux统计进程网络,查看磁盘io、内存free、系统进程ps、网络状态netstat、Linux抓包tcpdump...
  12. layer 弹出框(iframe层)父子页面传值
  13. mysql基础之mariadb集群双主(主主)架构
  14. (转)Java 之 FileReader FileInputStream InputStreamReader BufferedReader 作用与区别
  15. 如何利用insightface同时计算多个人脸相似度
  16. 十大热门职位公布 高薪行业一目了然
  17. 汉字转拼音 关于佛字转成了fu
  18. 国家旅游局发布厕所大数据报告,上厕所最容易的城市你一定想不到
  19. POJ 3278 Catch That Cow java 二分法 加 组合算法
  20. 逻辑代数几个重要定理

热门文章

  1. hdu2363 枚举最短路
  2. 【C 语言】数组 ( 数组相关地址 | 数组首元素地址 | 数组地址 )
  3. 【Android 逆向】函数拦截 ( CPU 高速缓存机制 | CPU 高速缓存机制 导致 函数拦截失败 )
  4. 【Android 安装包优化】资源混淆 ( AAPT2 资源编译工具 | resources.arsc 资源映射表 工作机制 )
  5. 【DBMS 数据库管理系统】OLTP 联机事务处理 与 OLAP 联机分析处理 ( 数据仓库 与 OLAP | OLAP 联机分析处理 | OLTP 与 OLAP 区别 )
  6. File类 判断功能和获取功能
  7. Host is not allowed to connect to this MySQL server解决方法
  8. 网站真分页js代码该怎么写? 1
  9. Windows 窗体启动和关闭的事件顺序
  10. Linux网络编程------网络编程基础