Java 为什么oracle jdbc驱动程序在将数字转换为字符串时截断前导零

Java 为什么oracle jdbc驱动程序在将数字转换为字符串时截断前导零,java,oracle,jdbc,Java,Oracle,Jdbc,当db中的字段类型为number,java bean的字段类型为string时,oracle jdbc驱动程序将数字转换为前导零截断的字符串,例如0.5到.5 我已经跟踪了oracle的jdbc驱动程序实现的源代码,然后在下面的oracle.jdbc.driver.NumberCommonAccessor类中找到了这段代码: String getString(int var1) throws SQLException { byte[] var3 = this.rowSpaceByte;

当db中的字段类型为number,java bean的字段类型为string时,oracle jdbc驱动程序将数字转换为前导零截断的字符串,例如
0.5
.5

我已经跟踪了oracle的jdbc驱动程序实现的源代码,然后在下面的
oracle.jdbc.driver.NumberCommonAccessor类中找到了这段代码:

String getString(int var1) throws SQLException {
   byte[] var3 = this.rowSpaceByte;
            int var4 = this.columnIndex + this.byteLength * var1 + 1;
            byte var5 = var3[var4 - 1];
            byte[] var6 = new byte[var5];
            System.arraycopy(var3, var4, var6, 0, var5);
            NUMBER var7 = new NUMBER(var6);
            String var8 = NUMBER.toString(var6);
            int var9 = var8.length();
            **if(var8.startsWith("0.") || var8.startsWith("-0.")) {
                --var9;
            }**

            if(var9 <= 38) {
                return var7.toText(38, (String)null).trim();
            } else {
                var8 = var7.toText(-44, (String)null);
                int var10 = var8.indexOf(69);
                int var11 = var8.indexOf(43);
                if(var10 == -1) {
                    var10 = var8.indexOf(101);
                }

}
String getString(int var1)抛出SQLException{
byte[]var3=this.rowSpaceByte;
int var4=this.columnIndex+this.byteLength*var1+1;
字节var5=var3[var4-1];
字节[]var6=新字节[var5];
数组副本(var3,var4,var6,0,var5);
编号var7=新编号(var6);
字符串var8=NUMBER.toString(var6);
int var9=var8.length();
**if(var8.startsWith(“0”)| | var8.startsWith(“-0”)){
--var9;
}**
if(var9
为什么oracle jdbc驱动程序在将数字转换为时截断前导零
串

隐式转换就是这样工作的。数字数据类型没有任何前导0,
2只是2,不是002不是00000002。
您可以在查询中使用
to_char
函数,使用带前导零的某种格式将数字转换为字符串,例如:

select to_char( 1,'09999' ) as X,
       to_char( 22, '0999999999' ) as y
from dual;

X      Y         
------ -----------
 00001  0000000022

但是,为什么当jdbc驱动程序将相同的值转换为java的数字数据类型(如int或long)时,就没有这种转换呢?这个NumberCommonAccessor是一些新的ojdbc jar的一部分吗?以前我从未遇到过这个问题,但现在我也遇到了这个问题。