1 DUMP(w[,x[,y[,z]]])
2 【功能】返回数据类型、字节长度和在内部的存储位置.
3 【参数】
4 w为各种类型的字符串(如字符型、数值型、日期型……)
5 x为返回位置用什么方式表达,可为:8,10,16或17,分别表示:8/10/16进制和字符型,默认为10。
6 y和z决定了内部参数位置
7
8
9 【返回】类型 <[长度]>,符号/指数位 [数字1,数字2,数字3,......,数字20]
10 如:Typ=2 Len=7: 60,89,67,45,23,11,102
11
12 SELECT DUMP('ABC',1016) FROM dual;
13 返回结果为:Typ=96 Len=3 CharacterSet=ZHS16GBK: 41,42,43
14
15   代码 数据类型
16   0 对应 VARCHAR2
17   1 对应 NUMBER
18   8 对应 LONG
19   12 对应 DATE
20   23 对应 RAW
21   24 对应 LONG RAW
22   69 对应 ROWID
23   96 对应 CHAR
24   106 对应 MSSLABEL
25
26
27
28 各位的含义如下:
29
30 1.类型: Number型,Type=2 (类型代码可以从Oracle的文档上查到)
31 2.长度:指存储的字节数
32 3.符号/指数位
33 在存储上,Oracle对正数和负数分别进行存储转换:
34 正数:加1存储(为了避免Null)
35 负数:被101减,如果总长度小于21个字节,最后加一个102(是为了排序的需要)
36
37 指数位换算:
38 正数:指数=符号/指数位 - 193 (最高位为1是代表正数)
39 负数:指数=62 - 第一字节
40
41 4.从<数字1>开始是有效的数据位
42
43 从<数字1>开始是最高有效位,所存储的数值计算方法为:
44
45 将下面计算的结果加起来:
46
47 每个<数字位>乘以100^(指数-N) (N是有效位数的顺序位,第一个有效位的N=0)
48
49 5、举例说明
50
51 SQL> select dump(123456.789) from dual;
52 返回:Typ=2 Len=6: 195,13,35,57,79,91
53
54 <指数>: 195 - 193 = 2
55 <数字1> 13 - 1 = 12 *100^(2-0) 120000
56 <数字2> 35 - 1 = 34 *100^(2-1) 3400
57 <数字3> 57 - 1 = 56 *100^(2-2) 56
58 <数字4> 79 - 1 = 78 *100^(2-3) .78
59 <数字5> 91 - 1 = 90 *100^(2-4) .009
60   123456.789
61
62 SQL> select dump(-123456.789) from dual;
63 返回:Typ=2 Len=7: 60,89,67,45,23,11,102
64 算法:
65 <指数> 62 - 60 = 2(最高位是0,代表为负数)
66 <数字1> 101 - 89 = 12 *100^(2-0) 120000
67 <数字2> 101 - 67 = 34 *100^(2-1) 3400
68 <数字3> 101 - 45 = 56 *100^(2-2) 56
69 <数字4> 101 - 23 = 78 *100^(2-3) .78
70 <数字5> 101 - 11 = 90 *100^(2-4) .009
71   123456.789(-)
72
73 现在再考虑一下为什么在最后加102是为了排序的需要,-123456.789在数据库中实际存储为
74
75 60,89,67,45,23,11
76
77 而-123456.78901在数据库中实际存储为
78
79 60,89,67,45,23,11,91
80
81 可见,如果不在最后加上102,在排序时会出现-123456.789<-123456.78901的情况。
82
83

【功能】返回数据类型、字节长度和在内部的存储位置.DUMP(w[,x[,y[,z]]])的更多相关文章

  1. MySQL数据类型字节长度

    1.字符串 char(n): n 字节长度 varchar(n): 如果是 utf8 编码, 则是 3 n + 2字节; 如果是 utf8mb4 编码, 则是 4 n + 2 字节. 2.数值类型: ...

  2. c语言数据类型字节长度

    突然间就想到了long和int到底什么区别(发现有很多问题都是突然间想到的),然后百度.google各种查找,各种书籍:<C++ Primer>.<C程序设计语言>查看,终于明 ...

  3. js识别中英文字符的字节长度并进行裁切

    //调用方法,传入字符串和需要返回的字节长度即可function cutstr(str,len){ var str_length = 0; var str_len = 0; str_cut = new ...

  4. C++中各种数据类型占据字节长度

    准备校招笔试的时候经常遇到C++某个数据类型占据多少个字节的问题,查阅了下资料,总结如下: 首先罗列一下C++中的数据类型都有哪些: 1.整形:int.long 2.字符型:char.wchar_t ...

  5. C#返回字符串的字节长度,一个中文算两个字符的代码

    如下代码段是关于C#返回字符串的字节长度,一个中文算两个字符的代码. public static int GetLength(string str) { if (str.Length == 0) re ...

  6. java String长度与varchar长度匹配理解(字符和字节长度理解)

    java String长度与varchar长度匹配理解(字符和字节长度理解) string中的length()长度,返回的是char的数量,每个char可以存储世界上任何类型的文字和字符,一个char ...

  7. 《超实用的Node.js代码段》连载一:获取Buffer对象字节长度

    我们知道Node.js框架下的Buffer对象能够对二进制数据提供很好的支持,那么获取一个Buffer对象真实的字节长度则是必须要用到的功能了.Node.js框架为开发人员提供了一个Buffer.by ...

  8. ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目

    ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)   我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...

  9. 升级d7的代码到2010以上版本注意事项(SetLength的参数就是字符长度,而不是字节长度,但Move函数要改)

    delphi2010是delphi所有版本的分水岭,其中2010—xe10.2之间版本上的代码都有比较好的兼容性,基本上都能直接进行编译,不需要过多修改,但d7距d2010跨度4个版本以上,新版本除了 ...

随机推荐

  1. TCP UDP 数据包过大导致分片情况

    MTU大家都知道,是链路层中的网络对数据帧的一个限制,依然以以太网为例,MTU为1500个字节.一个IP数据报在以太网中 传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于M ...

  2. OS + CentOS 7 / centos 7 / config / configuration / rescue / rc.local / yum

    s centos7开启网卡功能 https://blog.csdn.net/nkd50000/article/details/78903479 网卡默认是关闭的,未分配ip地址,解决办法: 1.修改文 ...

  3. vue项目 打包部署上线

    1. npm run dev:本地开发的时候做调试用的. 2. npm run build:打包部署上线,生成一个 dist 文件夹. 注意:用 npm run build 时,常遇到因引用路径不对导 ...

  4. JAVA记录-基础常识

    1.==与equals区别 1)==用于基本数据类型的比较,判断引用是否指向堆内存的同一地址.---引用地址 2)equals用于判断两个变量是否是对同一对象的引用,即堆中的内容是否相同,返回值为布尔 ...

  5. servlet dispatcher .forward(request, response); 进入其它servlet【原】

    dispatcher .forward(request, response); 进入其它servlet 假如我们的web.xml配置如下 <servlet> <servlet-nam ...

  6. go break label goto label contiue lable

    func main() { var i int fmt.Scanf("%d", &i) fmt.Println(i) if i%3 == 0 { goto LABLE1 } ...

  7. UVALive - 7637 E - Balanced String(构造)

    原题链接 题意:给出一个打乱顺序的序列,问是否能构造出一个括号匹配的字符串.每个数字为此前读取到的左括号数减去右括号数. 分析:有左括号开始构造,不够的话就找右括号.注意特殊情况待处理.详情看代码 # ...

  8. bzoj千题计划299:bzoj1856: [Scoi2010]字符串

    http://www.lydsy.com/JudgeOnline/problem.php?id=1856 卡特兰数 从(1,1)走到(n,m),不能走y=x 上方的点,求方案数 从(1,1)走到(n, ...

  9. 转---python os.exec*()家族函数的用法

    execl(file, arg0,arg1,...) 用参数列表arg0, arg1 等等执行文件 execv(file, arglist) 除了使用参数向量列表,其他的和execl()相同 exec ...

  10. 让富文本编辑器支持复制doc中多张图片直接粘贴上传

    Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧? 我希望打开文档doc直接复制粘贴到富文本编辑器,直接发布 感觉这个似乎很困难 ...