zoukankan      html  css  js  c++  java
  • [DB2]DB2中的数值类型

    在DB2数据库的使用过程中,遇到一个问题:

    一数据表的列设置为DECIMAL(20,5)
    但是存入的数据可能是2.1,也可以是2.212这样精度不确定,存储时数据库会全部自动补齐5位小数。

    经过一番搜索和群里的问询,最终发现可以使用DECFLOAD类型替换DECIMAL类型。主要说明(来源于百度百科)如下:

    DECFLOAT

    DECFLOAT 是 DB2 9.5 引入的一种新的数据类型,它是一种十进制浮点数据类型,适合处理精确的十进制业务数据。浮点数据类型例如 REAL 和 DOUBLE 类型都只是通过二进制近似方式来处理十进制数据,所以它们不适合大部分使用十进制数据的商业应用。
    DECFLOAT 合并了 DECIMAL 类型的精度和 FLOAT 类型的一些性能优势,所以它是一种结果精确而且处理高效的数据类型
    DECFLOAT 提供 16 位和 34 位两种精度的浮点数据类型。分别为表示为 DECFLOAT(16) 和 DECFOAT(34)。如果没有指明精度,DECFLOAT 默认为 DECFLOAT(34)。这两种精度的数据分别存储在 8 字节和 16 字节的空间里。

    编辑本段DECFLOAT &DECIMAL

    下面这个例子来说明 DECFLOAT 类型和 DECIMAL 类型的不同
    CREATE TABLE EMPLOYEE (
    SALARY DEC(14,2),
    BONUS DECFLOAT(16),
    COMMISSION DECFLOAT(34)
    );
    INSERT INTO EMPLOYEE VALUES (
    123456.78,
    1234567890.12,
    123456789012345678901234.56
    );
    SALARY
    BONUS
    COMMSSION
    123456.78
    1234567890.12
    123456789012345678901234.56
    如果我们插入精度更大的数据,对于 BONUS 和 COMMISSION 这两列,我们不需要作任何更改,而对于 SALARY 列,那就需要修剪数据使得数据符合 DECIMAL 列指明的精度。结果如下:
    INSERT INTO EMPLOYEE VALUES (
    123456.7891,
    1234567890.1234,
    123456789012345678901234.5678
    );
     
    SALARY
    SALARY
    COMMISSION
    123456.78
    1234567890.1234
    123456789012345678901234.5678
  • 相关阅读:
    TCP协议实现双工通信
    搭建本地FTP服务器
    CSS 3 选择器root、not、empty、target
    CSS 3 中的伪类选择器
    CSS 3 中的属性选择器
    Entity Framework Code First属性映射约定
    Entity Framework数据库初始化四种策略
    HTML 5 Base 64 编码
    HTML 5 离线程序
    HTML5 本地数据库IndexedDB数据库
  • 原文地址:https://www.cnblogs.com/tukzer/p/2865310.html
Copyright © 2011-2022 走看看