我们正尝试将这些值存储在一个表中,该表有一个列为"Number“的Datatype。当我们存储一个非常小的值时,问题就出现了,比如"0.000001“。
SQL> desc testing
Name Type Nullable Default Comments
---- ------ -------- ------- --------
A NUMBER Y
SQL> insert into testing values (0.00000001);
1 row inserted
SQL> select * from testing;
A
----------
0.001
1E-5
1E-8
0.0001有没有办法,我们可以存储和检索绝对值,就像store中的0.00001,而不是1E-5。
发布于 2015-01-21 18:34:45
这只是一个显示问题。正确设置numformat。
例如,
SQL> create table t(a number);
Table created.
SQL> insert into t values(0.000000000000001);
1 row created.
SQL> select * from t;
A
----------
1.0000E-15
SQL> set numformat 9D9999999999999999
SQL> select * from t;
A
-------------------
.0000000000000010
SQL>更新 OP表示,当尝试将数值发送到应用程序前端时,上述操作没有解决问题。应用程序正在使用的特定于区域设置的一定有问题。
如果问题仅仅出在显示器上,那么您可以使用to_char和适当的格式模型将其转换为字符。
SQL> create table t(a number);
Table created.
SQL> insert into t values(.000000000000000000001);
1 row created.
SQL> select * from t;
A
----------
1.0000E-21
SQL> select ltrim(to_char(a, '9999999D999999999999999999999', 'NLS_NUMERIC_CHARACTERS = ''.,''')) num from t
NUM
------------------------------
.000000000000000000001
SQL>注意ltrim的用法。
https://stackoverflow.com/questions/28064585
复制相似问题