首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle Precision

Oracle Precision
EN

Stack Overflow用户
提问于 2013-06-26 13:40:54
回答 1查看 95关注 0票数 1

我想要一个介于-7.2E-75和+7.2E+75之间的数字。我应该如何指定数字的精度和小数位数。(小数位数范围为1到38,精度为-84到127)。

如果有任何其他方法来完成这一点,请建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-26 16:49:13

您建议的数值完全在the limits of the Oracle NUMBER datatype范围内。

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

代码语言:javascript
复制
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采用123456766675544.344546567676,数据类型为NUMBER,则失败。”

失败?多么?这个值对我来说很好(和前面的表一样):

代码语言:javascript
复制
SQL> insert into t1 (col1) values ( 123456766675544.344546567676);

1 row created.

SQL> 

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

“当我启动上面的查询时,它只显示123456766675544,”

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

代码语言:javascript
复制
SQL> set numwidth 50
SQL> select col1 from t1
/
  2  
                                              COL1
--------------------------------------------------
7.20000000000000000000000000000000000000000000E+75
                      123456766675544.344546567676

SQL> 

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17312316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档