dump函数以及数字类型浅析
来源:互联网 发布:怎么查网络延迟 编辑:程序博客网 时间:2024/06/05 05:25
--dump函数DUMP(expr[, return_fmt [, start_position [, length ] ] ])DUMP returns a VARCHAR2 value containing the data type code, length in bytes, and internal representation of expr. The returned result is always in the database character set.dump函数返回一个varchar2值,其中包括数据类型代码,字节长度,以及内部表示的字节书目return_fmt可以是8,10,16,17分别代表八进制,十进制,十六进制,单字符默认的情况下,返回值不包含字符集信息。如果要获取expr的字符集的名称,可以在上述的值加上1000。例如参数return_fmt为1008时,返回值将以八进制表示并包含expr对应的字符集名称。DUMP的输出格式SYS@PROD1> select dump(1) from dual;DUMP(1)------------------Typ=2 Len=2: 193,2 --类型,长度,符号/指数位,数据位CODE TYP----- ------------------------------1 VARCHAR22 NUMBER8 LONG12 DATE23 RAW24 LONG RAW69 ROWID96 CHAR112 CLOB113 BLOB114 BFILE180 TIMESTAMP181 TIMESTAMP WITH TIMEZONE182 INTERVAL YEAR TO MONTH183 INTERVAL DAY TO SECOND208 UROWID231 TIMESTAMP WITH LOCAL TIMEZONE --类型符号/指数位:在存储上,Oracle对正数和负数分别进行存储转换:正数:加1存储(为了避免Null),在实际算法中就是要减1,必须>128负数:被101减,如果总长度小于21个字节,最后加一个102(是为了排序的需要),必须<128指数位换算:正数:指数=符号/指数位 - 193 (第一字节)负数:指数=62 - 第一字节数据位:每个数字位乘以100^(指数-N) (N是有效位数的顺序位,第一个有效位的N=0)example:SYS@PROD1> select dump(0) from dual; 128表示0DUMP(0)----------------Typ=2 Len=1: 128SYS@PROD1> select dump(98765432) from dual;DUMP(98765432)----------------------------Typ=2 Len=5: 196,99,77,55,33指数位196-193=3数据位计算(99-1)*100^3+(77-1)*100^2+(55-1)*100^1+(33-1)*100^0SYS@PROD1> select dump(-98765432) from dual;DUMP(-98765432)------------------------------Typ=2 Len=6: 59,3,25,47,69,102指数为62-59=3数据位计算(101-3)*100^3+(101-25)*100^2+(101-47)*100^1+(101-69)*100^0 || '102' 最后加上102为了排序--八进制十六进制的情况下SYS@PROD1> select dump(0,8) from dual;DUMP(0,8)----------------Typ=2 Len=1: 200SYS@PROD1> select dump(0,16) from dual;DUMP(0,16)---------------Typ=2 Len=1: 800200=1280x80=128 --计算方式与十进制相同SYS@PROD1> select dump(-432,16) from dual;DUMP(-432,16)------------------------Typ=2 Len=4: 3d,61,45,66指数位0x3d=61 62-61=1数据位计算 0x61=97 0x45=69 0x66=102 (101-97)*100^1+(101-69)*100^0 || '102'为什么负数要加上102进行排序?SYS@PROD1> select dump(-1.0001) from dual;DUMP(-1.0001)-------------------------------Typ=2 Len=5: 62,100,101,100,102SYS@PROD1> select dump(-1.000101) from dual;DUMP(-1.000101)-----------------------------------Typ=2 Len=6: 62,100,101,100,100,102-1.0001>-1.000101如果没有最后的102那么明显内部排序会62,100,101,100,100>62,100,101,100
0 0
- dump函数以及数字类型浅析
- 浅析python函数参数类型
- Linux Core Dump浅析
- 数字类型自动编码函数
- ruby判断数字类型函数
- python3 数字类型常用函数
- int()数字类型的函数
- dump函数
- Dump函数
- dump函数
- ualarm()函数调用失败以及浅析
- 浅析goto语句以及longjmp函数
- dump浅析B树索引
- PL/SQL Number数字类型函数
- Oracle SQL2 (number数字类型函数)
- MySQL 数字类型转换函数(concat/cast)
- freemarker操作字符串,数字,布尔类型函数
- freemarker操作字符串,数字,布尔类型函数
- 自己写的贪吃蛇(2)
- 内存管理:02虚拟存储器
- n个正整数,联接成一排,组成一个最小(最大)的多位整数
- 关于Android Studio快捷键的那些事儿
- 简易计算器之换主题
- dump函数以及数字类型浅析
- BZOJ3060/POI 2012 Tour de Byteotia
- android自定义控件使用例子(头部Bar)
- MIT牛人解说数学体系
- 【数论】乘法逆元
- easyUI中textArea控制输入字符的多少
- xml介绍
- $.ajax $.getJSON在java中的跨越解决方案
- 48. Rotate Image