一般来说,Oracle采用四舍五入。看到DB2可以设置current rounding mode,一共可以有五种选择。Oracle有没有类似的功能?还是一定要调用特定的函数,才能够不用四舍五入而是直接截断?多谢先!

解决方案 »

  1.   


    --使用round函数:SQL> select round(12.34567,2) from dual;ROUND(12.34567,2)
    -----------------
                12.35SQL> 
      

  2.   

    不是这个问题啦!我知道这个函数。我是说,比如下面这个例子:SQL> create table testt (c1 number(5,2));
    SQL> insert into testt values(123.456);
    SQL> select * from testt;        C1
    ----------
        123.46默认情况下,我插入的值是123.46。如果是DB2,默认状况是直接切断:
    db2 => create table testt(c1 number(5,2))
    db2 => insert into testt values(123.456)
    db2 => select * from testtC1
    -------
     123.45  1 record(s) selected.但是,我可以update db cfg using decflt_rounding ROUND_HALF_UP,connect reset, connect to db,然后就可以四舍五入了!
    db2 => insert into testt values(123.456)
    db2 => select * from testtC1
    -------
     123.45
     123.46  2 record(s) selected.Oracle 有没有类似的功能?还是oracle必须insert into testt values(TRUNC(123.456,2))这样的函数才能够改变默认的rounding模式?
      

  3.   

    通过设定字段来自动取值
    如下:SQL> create table tt(a number(6));Table createdSQL> insert into tt values(123.23);1 row insertedSQL> insert into tt values(24);1 row insertedSQL> insert into tt values(123.2356);1 row insertedSQL> select * from tt;      A
    -------
        123
         24
        123
      

  4.   

    如下:
    SQL> insert into tt values(23.67);1 row insertedSQL> select * from tt;      A
    -------
        123
         24
        123
         24
      

  5.   

    看到上面的了吗oracle直接自动取值四舍五入
      

  6.   

    我问的问题是:oracle默认会把数值四舍五入!我要怎样不让他四舍五入,而是都直接切断?并且,不用TRUNC函数!
    楼上各位都误解我的问题了!
      

  7.   

    换句话说,如何让oracle默认的rounding mode不再四舍五入。就像改变DB2默认的mode从直接切断变成四舍五入一样。设置一个值,影响整个数据库所有的行为。呃,,我上面没有描述清楚?