sql – Oracle是否为Number数据类型存储尾随零?

前端之家收集整理的这篇文章主要介绍了sql – Oracle是否为Number数据类型存储尾随零?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我在表中存储数值并在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来存储值.

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

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

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

解决方法

尾随零的存在是显示问题,而不是存储问题.尾随零并不重要,无论如何,只要值正确,数字的内部格式就不重要了. 10到10.00000之间没有价值差异.

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

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

如果问题是比例差异,您可以在比较之前将比例设置为适当的值.

猜你在找的MsSQL相关文章