问答详情
源自:3-2 Oracle管理表之数据类型

NUMBER(p,s)中s<0的含义

NUMBER(5,-2)表示啥意思,12345.67的话是变成45.67吗

提问者:陈晨辰_ 2019-04-04 15:09

个回答

  • 陈晨辰_
    2019-04-04 15:14:18

    Oracle中数据类型number(m,n)中m表示的是所有有效数字的位数,n表示的是小数位的位数。m的范围是1-38,即最大38位。

        1> .NUMBER类型细讲:
    oracle   number   datatype   语法:NUMBER[(precision   [, scale])]
    简称:precision   -->   p 
              scale   -->   s

    NUMBER(p,   s)
    范围:   1   <=   p   <= 38, 

           -84   <=   s   <= 127
            保存数据范围: -1.0e-130   <= number value  <   1.0e+126        
    保存在机器内部的范围:   1   ~   22   bytes

    有效位:从左边第一个不为0的数算起的位数。
    s的情况:
    s   >   0
          精确到小数点右边s位,并四舍五入。然后检验有效位是否   <=   p。
    s   <   0
          精确到小数点左边s位,并四舍五入。然后检验有效位是否   <=   p   +   |s|。
    s   =   0
          此时NUMBER表示整数。

    ---------------------------------------------------------------------------------------------------------

    第二个参数为负数时,以number(6,-2)为例,表示有效位6位,取整至小数点前2位,例子中如果输入123456则结果为123500,注意有四舍五入。