【功能】返回数据类型、字节长度和在内部的存储位置.DUMP(w[,x[,y[,z]]])
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]]])的更多相关文章
- MySQL数据类型字节长度
1.字符串 char(n): n 字节长度 varchar(n): 如果是 utf8 编码, 则是 3 n + 2字节; 如果是 utf8mb4 编码, 则是 4 n + 2 字节. 2.数值类型: ...
- c语言数据类型字节长度
突然间就想到了long和int到底什么区别(发现有很多问题都是突然间想到的),然后百度.google各种查找,各种书籍:<C++ Primer>.<C程序设计语言>查看,终于明 ...
- js识别中英文字符的字节长度并进行裁切
//调用方法,传入字符串和需要返回的字节长度即可function cutstr(str,len){ var str_length = 0; var str_len = 0; str_cut = new ...
- C++中各种数据类型占据字节长度
准备校招笔试的时候经常遇到C++某个数据类型占据多少个字节的问题,查阅了下资料,总结如下: 首先罗列一下C++中的数据类型都有哪些: 1.整形:int.long 2.字符型:char.wchar_t ...
- C#返回字符串的字节长度,一个中文算两个字符的代码
如下代码段是关于C#返回字符串的字节长度,一个中文算两个字符的代码. public static int GetLength(string str) { if (str.Length == 0) re ...
- java String长度与varchar长度匹配理解(字符和字节长度理解)
java String长度与varchar长度匹配理解(字符和字节长度理解) string中的length()长度,返回的是char的数量,每个char可以存储世界上任何类型的文字和字符,一个char ...
- 《超实用的Node.js代码段》连载一:获取Buffer对象字节长度
我们知道Node.js框架下的Buffer对象能够对二进制数据提供很好的支持,那么获取一个Buffer对象真实的字节长度则是必须要用到的功能了.Node.js框架为开发人员提供了一个Buffer.by ...
- 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的返回值自动进行各种序列化处理(序列化为 ...
- 升级d7的代码到2010以上版本注意事项(SetLength的参数就是字符长度,而不是字节长度,但Move函数要改)
delphi2010是delphi所有版本的分水岭,其中2010—xe10.2之间版本上的代码都有比较好的兼容性,基本上都能直接进行编译,不需要过多修改,但d7距d2010跨度4个版本以上,新版本除了 ...
随机推荐
- linux driver ------ platform模型,通过杂项设备(主设备号是10)注册设备节点
注册完设备和驱动之后,就需要注册设备节点 Linux杂项设备出现的意义在于:有很多简单的外围字符设备,它们功能相对简单,一个设备占用一个主设备号对于内核资源来说太浪费.所以对于这些简单的字符设备它们共 ...
- pyglet -- 视频播放器 (简单实现,效果不是太好,切换资源会卡死)(三)
实现一个简单的视频播放器,效果不是很好.这里不多说,直接贴代码了. #-*- coding:gbk -*- import pyglet import os from pyglet.gl import ...
- java程序中加入@SuppressWarnings("serial")是什么意思?
比如有个类实现了java.io.Serialize接口:package com.onede4.test; public class TestSerial implements java.io.Seri ...
- Java 基础生词表
class [klɑːs] : 类 (计算机科学); public ['pʌblɪk] : 公众的; void [vɒɪd] : 无返回类型; main [meɪn] : 主要的; static [' ...
- 虚拟机下安装ubuntu后root密码登录失败的问题
问题描述: 在虚拟机下安装了ubuntu中要输入用户名,一般情况下大家都会输入一个自己的网名或绰号之类的,密码也在这时设置过了. 但是当安装成功之后,使用命令#su root,然后输入刚才设置的密码, ...
- kudu记录-kudu原理
1.kudu是什么? 2.kudu基本概念 特点: High availability(高可用性).Tablet server 和 Master 使用 Raft Consensus Algorith ...
- CentOS6.8下安装memcached并设置开机自启动
参考资料:http://www.cnblogs.com/handongyu/p/6419305.html http://coolnull.com/1986.html 一.安装libevent 首 ...
- HDU - 4901 The Romantic Hero(dp)
https://vjudge.net/problem/HDU-4901 题意 给n个数,构造两个集合,使第一个集合的异或和等于第二个集合的相与和,且要求第一个集合的元素下标都小于第二个集合的元素下标. ...
- c#中如何在一个panel中放入窗体
Form2 f2 = new Form2(); //实例化窗体FORM2 f2.TopLevel = false; //设置为非顶级窗体 f2.FormBorderStyle = FormBorder ...
- 绘图QPainter-画笔
绘图要在paintEvent()方法中实现.在QPainter对象的begin()与end()方法间编写绘图代码.它会在控件或其他图形设备上进行低级的图形绘制 画笔样式Penstyle Qt.Nope ...