---MYSQL 的结果select  TRUNCATE(275600/11440000*-220000,-2), 275600/11440000*-220000---------------------------------------------
-5200 -5300.0000
----我需要的结果
select  TRUNCATE(275600/11440000*-220000,-2), 275600/11440000*-220000---------------------------------------------
-5300 -5300.0000----ORACLE中的结果 
select  TRUNC(275600/11440000*-220000,-2), 275600/11440000*-220000 from dual;---------------------------------------------
-5300 -5300
谁能帮我解释一下,或帮我解决一下这个问题

解决方案 »

  1.   

    select ROUND(275600/11440000*-220000,10)
    -5299.9999800000返回被舍去至小数点后D位的数字X。若D 的值为 0, 则结果不带有小数点或不带有小数部分。可以将D设为负数,若要截去(归零) X小数点左起第D位开始后面所有低位的值.  
    select TRUNCATE(275600/11440000*-220000,5)
    -5200select 275600/11440000*-220000
    -5300
      

  2.   

    SELECT  TRUNCATE(ROUND(275600/11440000*-220000,0),-2)
    -5300
      

  3.   

    MYSQL 中的TRUNCATE是截取,它的实现更符合TRUNCATE这个词的含义。 -3.5 截取后是 -3
    而ORACLE的程序员显然用了向下取整。
      

  4.   

    mysql> select round(275600/11440000*-220000,-2);
    +-----------------------------------+
    | round(275600/11440000*-220000,-2) |
    +-----------------------------------+
    |                             -5300 |
    +-----------------------------------+
    1 row in set (0.00 sec)mysql>
      

  5.   


    钻石大神,,,,,,我的目的是TRUNCATE,ORACLE中的TRUNC也是截取的意思,ORACLE也有ROUND进行四舍五入,
    -3.5 截取后是 -3  ORACLE中TRUNC(-3.5) 也是-3
      

  6.   

    我的所有的业务是保证  ORACLE 与MYSQL的计算结果保持一致,但是这个值变成了一个例外,同样的表达式,不同的数据库出现不同的结果
      

  7.   

    ORACLE 与MYSQL本来就有差别,看看费用就知道了