当我在表中存储数值并在 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中存储尾随零?
最佳答案
尾随零的存在是显示问题,而不是存储问题。尾随零并不重要,无论如何,只要值正确,数字的内部格式就无关紧要。 10
和 10.00000
之间没有值差异。
如果您需要尾随零,您可以在转换显示值时始终使用格式。例如:
System.out.printf("%10.4d\n", decimalValue);
如果问题是尺度差异,你可以在比较之前 将 尺度设置为合适的值。
关于sql - Oracle 是否为 Number 数据类型存储尾随零?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42199210/