Oracle 甲骨文;“数字”;数据类型精度
我们试图将这些值存储在一个表中,该表有一列“Number”数据类型。当我们存储一个非常小的值(如“0.000001”)时,就会出现问题Oracle 甲骨文;“数字”;数据类型精度,oracle,plsql,Oracle,Plsql,我们试图将这些值存储在一个表中,该表有一列“Number”数据类型。当我们存储一个非常小的值(如“0.000001”)时,就会出现问题 SQL> desc testing Name Type Nullable Default Comments ---- ------ -------- ------- -------- A NUMBER Y SQL> insert into testing values (0.00000001); 1 row inserted
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
有没有办法,我们可以像存储中一样存储和检索绝对值,0.00001而不是1E-5。这只是一个显示问题。正确设置
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表示,在尝试将数值发送到应用程序前端时,上述问题没有得到解决。应用程序使用的特定于区域设置的NLS设置肯定有问题
如果问题仅仅在于显示,那么您可以使用to_char
和适当的格式模型将其转换为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
的使用这只是一个显示问题。请正确设置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表示,在尝试将数值发送到应用程序前端时,上述问题没有得到解决。应用程序使用的特定于区域设置的NLS设置肯定有问题
如果问题仅仅在于显示,那么您可以使用to_char
和适当的格式模型将其转换为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
的使用这只是一个显示问题。请正确设置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表示,在尝试将数值发送到应用程序前端时,上述问题没有得到解决。应用程序使用的特定于区域设置的NLS设置肯定有问题
如果问题仅仅在于显示,那么您可以使用to_char
和适当的格式模型将其转换为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
的使用这只是一个显示问题。请正确设置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表示,在尝试将数值发送到应用程序前端时,上述问题没有得到解决。应用程序使用的特定于区域设置的NLS设置肯定有问题
如果问题仅仅在于显示,那么您可以使用to_char
和适当的格式模型将其转换为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
请注意,这只是一个格式问题,而不是精度损失。数字支持38位有效数字。该值存储准确,应用此格式的只是SQL*Plus。请使用或
或更改NLS设置设置所需设置numformat
,请参阅我的答案。我不明白这一点。正如其他人所说,这只是一个表示问题……请注意,这只是一个格式问题,而不是精度损失。数字支持38位有效数字。值存储准确,只有SQL*加上应用此格式。如果r使用到_char()
或更改NLS设置设置所需设置numformat
,请参阅我的答案。我不明白这一点。正如其他人所说,这只是一个表示问题……请注意,这只是一个格式问题,而不是精度损失。数字支持38位有效数字。值存储准确,只有SQL*加上应用此格式。如果r使用到_char()
或更改NLS设置设置所需设置numformat
,请参阅我的答案。我不明白这一点。正如其他人所说,这只是一个表示问题……请注意,这只是一个格式问题,而不是精度损失。数字支持38位有效数字。值存储准确,只有SQL*加上应用此格式。如果r使用到_char()
或更改NLS设置Set requirednumformat
,请参见我的答案。我不明白这一点。正如其他人所说,这只是一个表示问题……感谢Lalit,主要问题是我们在一个过程中以json格式发送此数据,当我们在promt中直接使用它时,它会很好地工作,但当我们在查询和以json格式传递它,我们仍然会得到E问题。不,为什么值会被发送为“E”?问题是你所看到的,只是显示。这与我们也很想理解的一样,在前端,当json被发送到.net时,他们仍然会发现它是“E”“,试图找出是否有任何方法可以将数据以正确的格式发送到Lanks Lalit,主要问题是我们在一个过程中以json格式发送这些数据,当我们直接在promt中使用它时,这会很好,但是当我们在查询中执行并以json格式传递它时,我们仍然会以电子问题结束。不,为什么将值作为“E”发送?问题是你所看到的,只是显示。这也是我们想要理解的,在前端,当json被发送到.net时,他们仍然发现它是“E”,试图弄清楚我们是否可以以正确的格式发送数据。Lanks Lalit,主要问题是我们在一个过程中以json格式发送数据,当我们直接在promt中使用它时,这会很好地工作,但是当我们在查询中执行并以json格式传递它时,我们仍然会得到一个E-issue。不,为什么值会被发送为“E”?问题是你所看到的,只是显示。这也是我们想要理解的,在前端,当json被发送到.net时,他们仍然发现它是“E”,试图弄清楚我们是否可以以正确的格式发送数据。Lanks Lalit,主要问题是我们在一个过程中以json格式发送数据,当我们在promt中直接使用它时,这会很好地工作,但是当我们在查询中执行并以json格式传递它时,我们