当我在表中存储数值并在 SQL Developer 中查询该表时,它没有显示 Number 数据类型的尾随零。

create table decimal_test(decimal_field number(*,10));

insert into decimal_test(decimal_field) values(10);
insert into decimal_test(decimal_field) values(10.11);
insert into decimal_test(decimal_field) values(10.100);
insert into decimal_test(decimal_field) values(10.00);

select * from decimal_test;

结果是
10
10.11
10.1
10

这些值是从 java 代码处理的。在这种情况下,我使用 BigDecimal 来存储值。

在保存到数据库之前,如果我有 BigDecimal(10.00) ,保存后,从数据库返回的值是 BigDecimal(10)BigDecimal 中的 Equals 方法失败,因为比例已更改。

而且我的小数精度不是常数。用户可以设置 BigDecimal(10.00) 或 BigDecimal (10.000) 等。因此,值需要按原样存储在 DB 中。

有没有办法在oracle中存储尾随零?

最佳答案

尾随零的存在是显示问题,而不是存储问题。尾随零并不重要,无论如何,只要值正确,数字的内部格式就无关紧要。 1010.00000 之间没有值差异。

如果您需要尾随零,您可以在转换显示值时始终使用格式。例如:

System.out.printf("%10.4d\n", decimalValue);

如果问题是尺度差异,你可以在比较之前 尺度设置为合适的值。

关于sql - Oracle 是否为 Number 数据类型存储尾随零?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42199210/

10-11 03:32
查看更多