ResultSetMetaData getScale返回0

时间:2011-03-18 15:27:55

标签: java oracle jdbc

我有一个名为RATE_HISTORY的表,其中有一个名为RATE的字段 RATE字段的比例为18 我正在使用ResultsetMetaData来获取Oracle 11.2中此表中列的元数据 我在我的代码中执行以下查询:

select (RATE * 100) from RATE_HISTORY

当我执行metadata.getScale()时,它返回0.但是,如果我执行此查询:

select RATE from RATE_HISTORY

getScale返回正确的值(18) 有没有办法在oracle中加倍两个数字并保持比例?

2 个答案:

答案 0 :(得分:2)

我怀疑这是因为比例是表格列的工件,而不是数据本身。从列值派生值时,会丢失该元数据。

如何使用

select RATE, (RATE * 100) from RATE_HISTORY

您可以从第一列获得比例,从第二列获得计算。

或者只是在java中进行乘法运算。

答案 1 :(得分:0)

将结果转换为select也应该有效,缺点是你必须重复列定义中的比例:

select cast(RATE * 100 as number(30, 18)) from RATE_HISTORY