我想要一个数字取值在 -7.2E-75 到 +7.2E+75 之间。我应该如何指定 NUMBER 的精度和比例。(比例范围为 1 到 38,精度为 -84 到 127)。
如果有任何其他方法可以做到这一点,请提出建议。
我想要一个数字取值在 -7.2E-75 到 +7.2E+75 之间。我应该如何指定 NUMBER 的精度和比例。(比例范围为 1 到 38,精度为 -84 到 127)。
如果有任何其他方法可以做到这一点,请提出建议。
您建议的数值完全在Oracle NUMBER 数据类型的限制范围内。
您需要指定精度吗?允许将列定义为 NUMBER:
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>
如果困扰您的是范围界限,您需要定义一个 CHECK 约束来强制执行规则。
“假设我希望 COL1 采用 123456766675544.344546567676,以 NUMBER 作为数据类型失败”
失败?如何?该值对我来说很好(与以前相同的表):
SQL> insert into t1 (col1) values ( 123456766675544.344546567676);
1 row created.
SQL>
因此,请提供更多详细信息,例如错误消息。
“当我触发上述查询时,它只显示 123456766675544,”
这听起来像一个显示问题。正在插入正确的值。看一下这个:
SQL> set numwidth 50
SQL> select col1 from t1
/
2
COL1
--------------------------------------------------
7.20000000000000000000000000000000000000000000E+75
123456766675544.344546567676
SQL>
在这种情况下,将 NUMWIDTH 设置为其最大允许值(在 SQL*plus 中)允许我们显示一个值,但另一个值仍然太大,因此我们必须使用科学计数法。