两个字段都是整型的,a和b,
我写的sql语句如下:
select a,b,a/b as c
from table_name
order by c;其结果是c字段有15位小数。
请教
c能否只保留4位小数?

解决方案 »

  1.   

    可以,加个round四舍五入select a,b,round(a/b,4) as c 
    from table_name 
    order by c; 
      

  2.   


    SQL> select round(12.827342384238476/3.3,4) xxx from dual;       XXX
    ----------
        3.8871SQL> 
      

  3.   

    还有一种办法:
    SQL> select to_char('45345.677973453','99999999.9999') xxx from dual;XXX
    --------------
        45345.6780SQL> select to_char(453.67869787867/3.3,'99999999.9999') xxx from dual;XXX
    --------------
          137.4784那就是to_char()函数转换
      

  4.   


    select a,b,round(a/b,4) as c 
    from table_name 
      

  5.   

    select a, b, to_char(round(a*100/b, 2)) || '%' as c
    from table_name
    order by (a/b); 
      

  6.   

    select a, b, round(a*100/b, 4) || '%' as c
    from table_name
    order by (a/b); 
      

  7.   

    楼上都忽略了一个问题:
    当数字小于0如0.123与%连接时并不会出现我们期待的0.123%而会变成.123%
    因此需要首先转换0.123为字符串再与%连接
    其次在数字转字符串时由于有格式的需要,因此要注意对null和0的特殊处理
    在下由于对oracle文档没看多少,不知道有没有相关的函数,因此仅用sql实现该功能
    select decode(a/b,null,'0.00',0,'0.00',to_char(round(a/b*100,2),'FM90.99'))||'%' as result from dual;
      

  8.   

    sorry 更正下to_char的格式为FM90.00显示效果会更好些