首页
学习
活动
专区
圈层
工具
发布

YashanDB|select 0.00 的返回类型居然变了?警惕 JDBC 下的类型映射差异!

【问题描述】在将应用从 Oracle 迁移到 YashanDB 后,开发人员发现相同 SQL:SELECT 0.00 FROM dual;在 Oracle 下返回 Float 类型,而在 YashanDB...【触发条件】查询中包含常量列 0.00;使用 Java + JDBC 驱动获取 ResultSetMetaData;依赖 precision 和 scale 判断返回值类型时,产生了误判。...Oracle 行为(JDBC)Oracle 所有数值类型本质上都是 NUMBER 类型;若未明确指定精度/刻度,JDBC 返回:precision = 0scale = -127Java 应用判断 scale...YashanDB 行为同样的常量 0.00.YashanDB JDBC 返回的是整型;实际返回结果 precision = 0、scale = -127.但底层处理逻辑不同,映射规则可能走到了 Integer...方法二:SQL 显式定义类型(推荐)在 SQL 中强制指明常量类型,避免数据库自行推断:SELECT CAST(0.00 AS NUMBER(10. 2)) FROM dual;【迁移提醒】Oracle

19000
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    bigdecimal保留2位小数_bigdecimal保留两位小数显示00

    作者:RaphetS 第一种方法 使用DecimalFormat类 举个例子,假如我们需要保留两位小数,我们可以这样写 DecimalFormat df = new DecimalFormat("0.00..."); 测试如下: double d = 0.200;DecimalFormat df = new DecimalFormat("0.00");System.out.println(df.format(...d)); 输出结果为: 0.20 若double d=0.000;输出结果为0.00; 若double d=0;输出结果为0.00; 若double d=41.2345;输出结果为41.23; 经测试...同理若是保留一位小数DecimalFormat df = new DecimalFormat(“0.0”);其他以此类推 若是这种写法DecimalFormat df = new DecimalFormat...(“0.00”),不管传入的任何值,均保留两位小数 还有一种写法是这样: double d = 41.123;DecimalFormat df = new DecimalFormat("#.##");System.out.println

    4.6K10

    java float四舍五入保留两位小数,java四舍五入float保留两位小数

    // b.setScale(2, BigDecimal.ROUND_HALF_UP) 表明四舍五入,保留两位小数 方法3: float scale = 34.236323; DecimalFormat...fnum = new DecimalFormat( “##0.00 “); String dd=fnum.format(scale); System.out.println(dd)...方式5: 此外如果使用struts标签做输出的话,有个format属性,设置为format=”0.00″就是保留两位小数 例如: 方法6: public static void main(String[...通过DecimalFormat.format返回String的 DecimalFormat df = new DecimalFormat(“#.##”); System.out.println(“通过DecimalFormat.format...StringFormat: ” String.format(“%.2f”, d)); } // 通过Math取整后做除法: 62.31 // 通过BigDecimal.setScale获得: 62.31 // 通过DecimalFormat.format

    1.1K10
    领券