`

Oracle数据类型-----(数字格式)

阅读更多
任何一个实数都是可以表示为:S=A.B*10n(10的n次方)。则我们只是需要存储A.B(数据部分),n(最高表示位)即可。可是oracle 还存储了符号位(负数需要用到)。

create table test_number ( num_col number);

SQL> INSERT INTO TEST_NUMBER VALUES (0);

1 row inserted

SQL> INSERT INTO TEST_NUMBER VALUES (1);

1 row inserted

SQL>  INSERT INTO TEST_NUMBER VALUES (2);

1 row inserted

SQL>  INSERT INTO TEST_NUMBER VALUES (25);

1 row inserted

SQL> INSERT INTO TEST_NUMBER VALUES (123);

1 row inserted

SQL> INSERT INTO TEST_NUMBER VALUES (4100);

1 row inserted

SQL> INSERT INTO TEST_NUMBER VALUES (132004078);

1 row inserted

SQL> INSERT INTO TEST_NUMBER VALUES (2.01);

1 row inserted

SQL> INSERT INTO TEST_NUMBER VALUES (0.3);

1 row inserted

SQL> INSERT INTO TEST_NUMBER VALUES (0.00000125);

1 row inserted

SQL> INSERT INTO TEST_NUMBER VALUES (115.200003);

1 row inserted

SQL>  INSERT INTO TEST_NUMBER VALUES (-1);

1 row inserted

SQL>  INSERT INTO TEST_NUMBER VALUES (-2);

1 row inserted

SQL>  INSERT INTO TEST_NUMBER VALUES (-20032);

1 row inserted

SQL> INSERT INTO TEST_NUMBER VALUES (-234.432);

1 row inserted

SQL>  COMMIT;

Commit complete



SQL> SELECT NUM_COL, DUMP(NUM_COL, 16) D_NUMBER FROM TEST_NUMBER;

   NUM_COL           D_NUMBER
---------- --------------------------------------------------------------------------------
         0                Typ=2 Len=1: 80
         1                Typ=2 Len=2: c1,2
         2                Typ=2 Len=2: c1,3
        25               Typ=2 Len=2: c1,1a
       123              Typ=2 Len=3: c2,2,18
      4100             Typ=2 Len=2: c2,2a
132004078        Typ=2 Len=6: c5,2,21,1,29,4f
      2.01              Typ=2 Len=3: c1,3,2
       0.3               Typ=2 Len=2: c0,1f
   1.25E-6            Typ=2 Len=3: be,2,1a
115.200003        Typ=2 Len=6: c2,2,10,15,1,4
        -1                Typ=2 Len=3: 3e,64,66
        -2                Typ=2 Len=3: 3e,63,66
    -20032            Typ=2 Len=5: 3c,63,65,45,66
  -234.432           Typ=2 Len=6: 3d,63,43,3a,51,66

15 rows selected



0 :没有数据部分,只存储了一个最高表示位。

1 :最高表示位 为 C1 。这是为什么那??

正数和负数具有相同的取值范围,所以,正数的最高表示位 > 80 ; 负数的最高表示位 < 80 。

但是正数部分又分为:大于1的数和小数,并且同样具有相同的取值范围。



计算公式如下:

SQL>  select round( (to_number('ff','xx') - to_number('80','xx'))/2 + to_number('80','xx') ) + 1 from dual ;

ROUND((TO_NUMBER('FF','XX')-TO
------------------------------
                           193

SQL> select to_char('193','xx') from dual;

TO_CHAR('193','XX')
-------------------
c1

所以,个数的最高表示位为:C1。

则百位的最高表示位为C2,万位的最高表示位为C3,百分位的最高表示位为C0,万分位的最高表示位为C0,以此类推。

这又是为什么哪?

Oracle每个字节表示2位数,两位数之间相差的是100(即10的平方)。所以百位的最高表示位为C2.



但是oracle又为什么用0x2表示1哪???

对于这个2位数,出现的可能是0~99共100种可能,问题出在0这里。Oracle底层是用C语言实现的,我们知道二进制0在C语言中用作字符串终结符,Oracle为了避免这个问题,因此使用了0x1表示0,并依次类推,使用0x64表示99。



-1                Typ=2 Len=3: 3e,64,66 , 最高表示位 为什么 是 3e??

因为,负数和正数互为相反数。其最高表示位相加为 255 , 数据部分相加为:66 。所以-1的最高表示位为 3e。

SQL> select to_char('193','xx') from dual;

TO_CHAR('193','XX')
-------------------
c1

SQL> select to_number('3e','xx') from dual ;

TO_NUMBER('3E','XX')
--------------------
                  62

负数的数据部分用 65 到 2 进行表示。

分享到:
评论

相关推荐

    Oracle基本数据类型存储格式浅析

    《Oracle基本数据类型存储格式详解》 Oracle数据库中,数据类型的存储格式对于数据库的性能和空间利用率至关重要。本文将深入探讨Oracle的字符类型、数字类型、日期类型、ROWID类型和RAW类型的基本数据类型的存储...

    sqlserver-oracle 数据类型对照

    - `bit`在SQL Server中没有直接对应的Oracle数据类型,但可以近似用单字节的`NUMBER(1)`表示。 - `datetime`和`smalldatetime`在SQL Server中对应Oracle的`DATE`,表示日期和时间。 - `decimal`和`numeric`在SQL ...

    Oracle数据类型

    Oracle数据库中常用的数据类型主要包括字符类型、数字类型、日期时间类型以及LOB类型等,每一种数据类型适用于特定的数据存储需求。 1. 字符类型 - CHAR类型是固定长度的,用于存储定长的字符串,最多2000个字符。...

    oracle函数大全-数字处理函数

    Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,它提供了丰富的内置函数来处理各种数据类型,包括数字和字符串。本文将深入探讨Oracle中的数字处理函数,帮助你更好地理解和利用这些功能强大的工具。 1....

    Oracle各种数据类型的介绍,适合中高级编程开发人员

    本文将详细介绍Oracle中的几种常见数据类型,并针对每种类型的特点进行分析,旨在帮助中高级编程开发人员以及初学者更好地理解和使用Oracle数据类型。 #### Character 类型 - **CHAR**: 是一种固定长度的字符类型...

    oracle基本数据类型

    Oracle 中有多种基本数据类型,包括字符类型、数字类型、日期类型、二进制类型等。了解这些数据类型的特点和使用场景,对于数据库设计和开发至关重要。本文将详细介绍 Oracle 中的基本数据类型,并讨论它们的特点和...

    oracle数据类型.doc

    在Oracle中,数据类型可以分为基本数据类型、对象数据类型和大型对象数据类型。以下是对Oracle主要数据类型的详细说明: 1. **Char(n)**: 这是一种定长字符串数据类型,其中n的范围是1到2000字节。如果未指定长度,...

    Oracle数据类型说明

    ### Oracle 数据类型详解 #### 一、概述 Oracle 数据库提供了丰富的数据类型,这些类型能够满足各种业务场景的需求。在数据库设计中合理选择数据类型对于提高数据库性能、减少存储空间和确保数据一致性等方面都至...

    oracle数据类型总结PPT

    以下是对Oracle数据类型的详细总结,特别是字符和二进制串类型。 首先,我们来看字符类型。Oracle提供了四种基本的字符数据类型:`CHAR`,`NCHAR`,`VARCHAR2`,以及`NVARCHAR2`。`CHAR`和`NCHAR`是固定长度的数据...

    v512工作室_张利国_Java高端培训系列教材_Oracle实用教程_04章_Oracle数据类型和函数.

    ### Oracle 数据类型详解 #### 4.1 Oracle 数据类型 ##### 4.1.1 概述 在深入了解Oracle数据库中的各种数据类型之前,我们首先需要明确数据类型的基本概念。数据类型是由一组具有相同特性的值及其上定义的操作...

    oracle和sql数据类型

    总结来说,Oracle 和 SQL Server 数据类型在很多方面有相似之处,如字符串、数字、日期/时间、二进制数据类型,但在细节上有所差异,如长度限制、Unicode 支持和特定用途的类型(如 Oracle 的 Bfile 和 SQL Server ...

    Oracle基本数据类型.pdf

    ### Oracle基本数据类型详解 #### 一、概述 Oracle 数据库提供了多种数据类型来满足不同的需求,这些数据类型包括字符型、数值型、日期时间型、大对象类型等。了解这些基本数据类型对于正确设计数据库表结构至关...

    ORACLE文档--Database Error Messages

    Oracle数据库错误消息的结构设计得相当严谨,每条错误消息都有一个特定的错误代码,通常以“ORA-”开头,后跟四位数字。例如,“ORA-00001”表示“唯一约束违反”,意味着尝试插入的数据违反了表中的唯一性约束条件...

    Oracle9i数据类型Java数据类型Schema类型对比.doc

    - Java 的基本数据类型如 byte, short, int, long, float, double, boolean 与 Oracle9i 中的某些数字类型相对应。 - String 类型用于存储文本,与 Oracle9i 中的 CHAR 和 VARCHAR2 类型匹配。 - Date 和 ...

    Oracle Database 18c In-Memory技术概述.docx

    In-Memory 列存储支持多种数据类型,包括数字、字符串、日期和时间等,并且可以根据需要对数据进行压缩和加密。 In-Memory 动态大小调整和自动内存管理是 Oracle Database In-Memory 的一个重要特性,该特性可以...

    Oracle----相关常用命令

    `**:描述名为temp的表结构,包括字段名、数据类型等信息。 - 此命令有助于快速了解表的基本结构。 ### 5. SQL函数应用 - **`select upper('coolszy') from dual;`**:将字符串'coolszy'转换为大写。 - **`select ...

    oracle格式化查看json数据

    总结来说,Oracle提供了全面的JSON支持,包括数据类型、函数、操作符和PL/SQL包,以及客户端工具的增强,使我们能够方便地在数据库中存储、查询和格式化查看JSON数据。无论你是开发人员还是数据库管理员,理解并掌握...

    Oracle开发技术--整理

    通过理解和熟练运用这些Oracle开发技术,开发者可以更高效地管理和操作Oracle数据库,进行数据查询、更新、维护等工作。在实际开发中,还需要结合具体业务需求,灵活运用这些知识,以实现高效且可靠的数据库解决方案...

    sql server 和oracle 中数据类型的区别

    对应的Oracle数据类型为`NUMBER(19)`。 2. **binary**: 用于存储二进制数据,固定长度。例如,`binary(50)`表示存储50个字节的二进制数据,在Oracle中对应的类型为`RAW(50)`。 3. **bit**: 用于存储布尔值或单个位的...

    oracle支持的数据类型

    Oracle数据库系统支持多种数据类型,这些数据类型用于定义表中的列,以便存储各种形式的信息。以下是对Oracle支持的数据类型进行详细解释: 1. 字符类: - `CHAR`:这是一个定长字符串类型,最大长度为2000个字符...

Global site tag (gtag.js) - Google Analytics