Oracle 甲骨文精度

Oracle 甲骨文精度,oracle,database-design,numbers,Oracle,Database Design,Numbers,我想让一个数字取-7.2E-75到+7.2E+75之间的值。我应该如何指定数字的精度和比例。刻度范围为1至38,精度为-84至127 如果有其他方法可以做到这一点,请提出建议。您建议的数值在规定范围内 是否需要指定精度?允许仅将列定义为数字: SQL> desc t1 Name Null? Type ----------------------------------------- -------- ---

我想让一个数字取-7.2E-75到+7.2E+75之间的值。我应该如何指定数字的精度和比例。刻度范围为1至38,精度为-84至127


如果有其他方法可以做到这一点,请提出建议。

您建议的数值在规定范围内

是否需要指定精度?允许仅将列定义为数字:

SQL> desc t1
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COL1                                               NUMBER
 COL2                                               NUMBER
 COL3                                               NUMBER
 COL4                                               NUMBER

SQL> insert into t1 (col1, col2) values ( -7.2E-75, +7.2E+75);

1 row created.

SQL> 
如果是范围边界让您感到困扰,您需要定义一个检查约束来强制执行规则


假设我想让COL1接受12345676675544.344546567676,数字作为其失败的数据类型

失败?怎样该值适用于我,与前面相同的表:

SQL> insert into t1 (col1) values ( 123456766675544.344546567676);

1 row created.

SQL> 
因此,请提供更多详细信息,例如错误消息


当我启动上面的查询时,它只显示12345676767544

这听起来像是一个显示问题。正在插入正确的值。看看这个:

SQL> set numwidth 50
SQL> select col1 from t1
/
  2  
                                              COL1
--------------------------------------------------
7.20000000000000000000000000000000000000000000E+75
                      123456766675544.344546567676

SQL> 

在这种情况下,在SQL*plus中将NUMWIDTH设置为其允许的最大值允许我们显示一个值,但另一个值仍然太大,因此我们必须使用科学记数法。

您建议的数值在允许的范围内

是否需要指定精度?允许仅将列定义为数字:

SQL> desc t1
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COL1                                               NUMBER
 COL2                                               NUMBER
 COL3                                               NUMBER
 COL4                                               NUMBER

SQL> insert into t1 (col1, col2) values ( -7.2E-75, +7.2E+75);

1 row created.

SQL> 
如果是范围边界让您感到困扰,您需要定义一个检查约束来强制执行规则


假设我想让COL1接受12345676675544.344546567676,数字作为其失败的数据类型

失败?怎样该值适用于我,与前面相同的表:

SQL> insert into t1 (col1) values ( 123456766675544.344546567676);

1 row created.

SQL> 
因此,请提供更多详细信息,例如错误消息


当我启动上面的查询时,它只显示12345676767544

这听起来像是一个显示问题。正在插入正确的值。看看这个:

SQL> set numwidth 50
SQL> select col1 from t1
/
  2  
                                              COL1
--------------------------------------------------
7.20000000000000000000000000000000000000000000E+75
                      123456766675544.344546567676

SQL> 

在这种情况下,在SQL*plus中将NUMWIDTH设置为其允许的最大值允许我们显示一个值,但另一个值仍然太大,因此我们必须使用科学记数法。

只是问一下,您不能将它们用作varchar吗?如果你想计算,你可以用_number@Moudiz-你到底为什么认为将数字数据存储为字符串是个好主意?在传统系统中处理这些事情而不设计新的应用程序已经够糟糕的了。我不知道为什么投票结果如此之广泛。在我编辑它之前,对我来说似乎是一个非常集中的问题。只是问一下,你不能把它们用作varchar吗?如果你想计算,你可以用_number@Moudiz-你到底为什么认为将数字数据存储为字符串是个好主意?在传统系统中处理这些事情而不设计新的应用程序已经够糟糕的了。我不知道为什么投票结果如此之广泛。在我编辑它之前,对我来说似乎是一个非常集中的问题。假设我想让COL1接受12345666675544.344546567676,数字作为数据类型,它失败了。当我启动上面的查询时,它只显示12345666675544,但我想它接受小数后的值,它也应该是完整的12345666675544.344567676。很抱歉,我说失败了,它没有失败,我没有通过将数据类型设置为NUMBER来获得所需的结果。假设我希望COL1采用123456767544.344546567676,其中NUMBER作为其失败的数据类型。当我启动上述查询时,它仅显示123456767544,但我希望它在小数点后取值,也应该是完整的12345666675544.344546567676。很抱歉,我说失败了,这不是失败,通过将数据类型设置为数字,我没有得到想要的结果。