数字类型包含number,integer,float...oracle内部标识为2
数字类型在oracle内部是以单字节的数字为存储的变长数组
数字类型在oracle文件中的存储格式为:
类型 <[长度]>,符号/指数位 [数字1,数字2,数字3,......,数字20]
各位的含义如下:
1.类型: Number型,Type=2 (类型代码可以从Oracle的文档上查到)
2.长度:指存储的字节数
3.符号/指数位
在存储上,Oracle对正数和负数分别进行存储转换:
正数:加1存储(为了避免Null)
负数:被101减,如果总长度小于21个字节,最后加一个102(是为了排序的需要)
指数位换算:
If the first byte is greater than or equal to 128, then the number is positive and the
exponent is:
exponent = first byte - 128 - 65 = first byte - 193
If the first byte is less than 128, then the number is negative and the exponent is:
exponent = (255 - first byte) - 128 - 65 = 62 - first byte
4.从<数字1>开始是有效的数据位
从<数字1>开始是最高有效位,所存储的数值计算方法为:
将下面计算的结果加起来:
每个<数字位>乘以100^(指数-N) (N是有效位数的顺序位,第一个有效位的N=0)
5. 正数计算举例:
SYS@huiche>select dump(123456.783,16) from dual;
DUMP(123456.783,16)
----------------------------------------------------------
Typ=2 Len=6: c3,d,23,39,4f,1f
SYS@huiche>
<指数>: 195 - 193 = 2
• 数字
0xd = 13(dec) -1 = 12 > 12 * 100^2 = 120000
0x23 = 35(dec) -1 = 34 > 34 * 100^1 = 3400
0x39 = 57(dec) -1 = 56 > 56 * 100^0 = 56
0x4f = 79(dec) -1 = 78 > 78 * 100^-1 = .78
0x5b = 31(dec) -1 = 30 > 90 * 100^-2 = .003
sum = 123456.783
因为第一个字节(0xc3)大于128, 所以为正数
6.负数计算举例:
SYS@huiche>select dump(-123456.783,16) from dual;
DUMP(-123456.783,16)
------------------------------------------------------------------
Typ=2 Len=7: 3c,59,43,2d,17,47,66
SYS@huiche>
指数 => 0x3c= 62(dec) - 60 = 2
• 数字
0x59 = 89(dec): 101 - 89 = 12 > 12 * 100^2 = 120000
0x43 = 67(dec): 101 - 67 = 34 > 34 * 100^1 = 3400
0x2d = 45(dec): 101 - 45 = 56 > 56 * 100^0 = 56
0x17 = 23(dec): 101 - 23 = 78 > 78 * 100^-1 = .78
0xb = 11(dec): 101 - 71 = 30 > 30 * 100^-2 = .003
sum = 123456.783 (-)
• 最后一个字节不计算在内 0x66 = 102(dec) ,第一个字节(0x3c)小于128, 所以为负数
7.0的存储数字是80
SYS@huiche>select dump(0,16) from dual;
DUMP(0,16)
------------------------------
Typ=2 Len=1: 80
SYS@huiche>
分享到:
相关推荐
《Oracle基本数据类型存储格式详解》 Oracle数据库中,数据类型的存储格式对于数据库的性能和空间利用率至关重要。本文将深入探讨Oracle的字符类型、数字类型、日期类型、ROWID类型和RAW类型的基本数据类型的存储...
Oracle 中有多种基本数据类型,包括字符类型、数字类型、日期类型、二进制类型等。了解这些数据类型的特点和使用场景,对于数据库设计和开发至关重要。本文将详细介绍 Oracle 中的基本数据类型,并讨论它们的特点和...
### Oracle基本数据类型详解 #### 一、概述 Oracle 数据库提供了多种数据类型来满足不同的需求,这些数据类型包括字符型、数值型、日期时间型、大对象类型等。了解这些基本数据类型对于正确设计数据库表结构至关...
Oracle数据库支持多种数据类型,包括数值型、字符型、日期时间型和LOB等大对象数据类型,每种数据类型都有其特定的存储需求和方式。 首先,数值型数据类型,比如INT, NUMBER等,用于存储数字信息。在Oracle中,数字...
总结来说,Oracle 和 SQL Server 数据类型在很多方面有相似之处,如字符串、数字、日期/时间、二进制数据类型,但在细节上有所差异,如长度限制、Unicode 支持和特定用途的类型(如 Oracle 的 Bfile 和 SQL Server ...
本文将详细介绍Oracle中的几种常见数据类型,并针对每种类型的特点进行分析,旨在帮助中高级编程开发人员以及初学者更好地理解和使用Oracle数据类型。 #### Character 类型 - **CHAR**: 是一种固定长度的字符类型...
在Oracle中,数据类型可以分为基本数据类型、对象数据类型和大型对象数据类型。以下是对Oracle主要数据类型的详细说明: 1. **Char(n)**: 这是一种定长字符串数据类型,其中n的范围是1到2000字节。如果未指定长度,...
- Java 的基本数据类型如 byte, short, int, long, float, double, boolean 与 Oracle9i 中的某些数字类型相对应。 - String 类型用于存储文本,与 Oracle9i 中的 CHAR 和 VARCHAR2 类型匹配。 - Date 和 ...
Oracle数据库中常用的数据类型主要包括字符类型、数字类型、日期时间类型以及LOB类型等,每一种数据类型适用于特定的数据存储需求。 1. 字符类型 - CHAR类型是固定长度的,用于存储定长的字符串,最多2000个字符。...
Oracle数据库系统支持多种数据类型,这些数据类型用于定义表中的列,以便存储各种形式的信息。以下是对Oracle支持的数据类型进行详细解释: 1. 字符类: - `CHAR`:这是一个定长字符串类型,最大长度为2000个字符...
Oracle 与 DB2 数据类型的分类对应说明 在数据类型方面,Oracle 和 DB2 都提供了多种数据类型以满足不同的应用需求。然而,这两种数据库管理系统之间的数据类型并不完全相同,本文将对 Oracle 和 DB2 数据类型进行...
除了上述提到的数据类型外,Oracle 还支持其他特殊类型,例如 `BLOB`(二进制大对象)、`CLOB`(字符大对象)等,用于存储较大的二进制数据和文本数据。 ### 总结 选择合适的数据类型是数据库设计中的关键步骤之一...
总结来说,Oracle提供了全面的JSON支持,包括数据类型、函数、操作符和PL/SQL包,以及客户端工具的增强,使我们能够方便地在数据库中存储、查询和格式化查看JSON数据。无论你是开发人员还是数据库管理员,理解并掌握...
在进行软件开发时,了解Oracle数据库的基本数据类型至关重要,因为它直接影响到数据的存储、处理和检索效率。以下是对Oracle数据库基本数据类型的详细介绍: 1. **CHAR(n)**:CHAR是一种固定长度的字符串类型,最大...
7、LOB数据类型用于存储大型的,没有被结构化的数据,例如二进制文件,图片文件,LOB主要分为BLOB和CLOB,BLOB数据类型用于存储二进制对象:图像,音频,视频...CLOB数据类型用于存储字符格式的大型对象 8、ORACLE...
7. RAW:RAW数据类型存储固定长度的二进制数据,最大长度为2000个字节。它常用于存储图片、文件的哈希值或其他非文本数据。 8. LONG RAW:与LONG类似,但用于存储可变长度的二进制数据,最大长度同样为2GB。 9. ...
Oracle 数据库常用数据类型 Oracle 数据库中有多种数据类型,每种数据类型都有其特点和应用...了解 Oracle 数据库的数据类型是非常重要的,因为它可以帮助开发者正确地设计数据库 schema,提高数据的存储和检索效率。
Oracle 数据类型是数据库管理系统Oracle中的核心元素,它们用于定义和存储各种类型的数据。与其他数据库系统相比,Oracle的数据类型相对简洁,能有效地处理多种数据。在Oracle中,数据类型大致可以分为以下几类: 1...