【发布时间】:2017-02-13 19:00:20
【问题描述】:
当我在表中存储数值并在 SQL Developer 中查询该表时,它不会显示数字数据类型的尾随零。
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) 等。因此,值需要按原样存储在数据库中。
有没有办法在 oracle 中存储尾随零?
【问题讨论】:
-
我使用SQL Developer工具查询数据进行测试。但是我们在实际场景中使用java oracle jdbc查询结果。
-
我认为您不能告诉 Oracle 存储尾随零,但您应该能够配置您的 SQL 客户端(或您的应用程序)以使用所需的小数位数格式化输出。跨度>
-
小数位数不是恒定的。用户可以设置任意位数的小数。但是有一个最大限制。
-
如果那些微不足道的零对您的用户如此重要:请将这些数字另存为
VARCHAR2。 -
@suren:您可以使用用户定义的小数位数来格式化前端的数字。