oracle在使用精度保存id后截断该值?

oracle在使用精度保存id后截断该值?,oracle,Oracle,我有一张桌子。它有一个数据类型为38,20的列。它是一个id列。out应用程序生成id。我正在尝试插入id值为105.00010的记录。但它只插入了105.0001。我可以知道它截断一个值0的原因吗。它通常插入105.00001到105.00009之间的记录。插入105.00010时,它将被截断。请帮帮我 列大小为**编号38,20** 谢谢 小数点后最右边的零不重要,因此该值不会被截断,它仍然是相同的值 如果需要保持不变,则可能需要将该值视为varchar2。小数点后最右边的零不重要,因此该值

我有一张桌子。它有一个数据类型为38,20的列。它是一个id列。out应用程序生成id。我正在尝试插入id值为105.00010的记录。但它只插入了105.0001。我可以知道它截断一个值0的原因吗。它通常插入105.00001到105.00009之间的记录。插入105.00010时,它将被截断。请帮帮我

列大小为**编号38,20**


谢谢

小数点后最右边的零不重要,因此该值不会被截断,它仍然是相同的值


如果需要保持不变,则可能需要将该值视为varchar2。

小数点后最右边的零不重要,因此该值不会被截断,它仍然是相同的值


如果需要保持不变,则可能需要将该值视为varchar2。

请参阅以下测试用例:

WITH data_values
  AS (SELECT 105.0001 AS test_val FROM dual
      UNION ALL
      SELECT 105.00010 AS test_val FROM dual)
SELECT test_val,
       TO_NUMBER(test_val, '999.99999') AS NUM,
       TO_CHAR(test_val, '999.99999') AS STR
  FROM data_values;
结果:

TEST_VAL NUM      STR
105.0001 105.0001 105.00010
105.0001 105.0001 105.00010

最后一个非零数字后的值与Oracle无关。这两个数字是相等的。

请参阅以下测试用例:

WITH data_values
  AS (SELECT 105.0001 AS test_val FROM dual
      UNION ALL
      SELECT 105.00010 AS test_val FROM dual)
SELECT test_val,
       TO_NUMBER(test_val, '999.99999') AS NUM,
       TO_CHAR(test_val, '999.99999') AS STR
  FROM data_values;
结果:

TEST_VAL NUM      STR
105.0001 105.0001 105.00010
105.0001 105.0001 105.00010

最后一个非零数字后的值与Oracle无关。这两个数字是相等的。

105.00010与105.0001的值完全相同。没有被截断。嗨,谢谢你的回复。现在,如果我保存一个id为105.0001的记录,那么它会覆盖以前的记录吗?当您更新列中的值时,当然会覆盖以前的值。你的问题到底是什么?考虑一下,我最初保存了一个ID为105.00010的记录。但是oracle插入了id为105.0001的记录,并截断了0。现在,我第二次有一条105.0001的记录,而保存此记录时会覆盖上一条id为105.0001的记录,实际上是105.00010。请帮助我。再次说明:没有截断任何内容,105.00010和105.0001的值完全相同。您将再次使用完全相同的值替换存储的值。105.00010与105.0001的值完全相同。没有被截断。嗨,谢谢你的回复。现在,如果我保存一个id为105.0001的记录,那么它会覆盖以前的记录吗?当您更新列中的值时,当然会覆盖以前的值。你的问题到底是什么?考虑一下,我最初保存了一个ID为105.00010的记录。但是oracle插入了id为105.0001的记录,并截断了0。现在,我第二次有一条105.0001的记录,而保存此记录时会覆盖上一条id为105.0001的记录,实际上是105.00010。请帮助我。再次说明:没有截断任何内容,105.00010和105.0001的值完全相同。您将再次使用完全相同的值替换存储的值。感谢您的回复。我正在sqldeveloper中查看此id。在这里,它似乎被截断了。但同样的,我使用pl/SQLDeveloper进行查询。这里我得到了所有的精确值。为什么sqldeveloper会这样显示?请帮助我。您需要设置默认字符掩码,以便在SQLDeveloper的首选项中显示数字数据。@user1016403 SQLDeveloper在“工具/首选项”下设置了如何显示某些类型。转到“工具”->“首选项”,然后在“数据库”下单击“NLS”更改其中的格式掩码。有关可用数字掩码的完整描述,请参见:谢谢回复。我正在sqldeveloper中查看此id。在这里,它似乎被截断了。但同样的,我使用pl/SQLDeveloper进行查询。这里我得到了所有的精确值。为什么sqldeveloper会这样显示?请帮助我。您需要设置默认字符掩码,以便在SQLDeveloper的首选项中显示数字数据。@user1016403 SQLDeveloper在“工具/首选项”下设置了如何显示某些类型。转到“工具”->“首选项”,然后在“数据库”下单击“NLS”更改其中的格式掩码。有关可用数字掩码的完整说明,请参见: