可以,加个round四舍五入select a,b,round(a/b,4) as c from table_name order by c;
SQL> select round(12.827342384238476/3.3,4) xxx from dual; XXX ---------- 3.8871SQL>
还有一种办法: 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()函数转换
select a,b,round(a/b,4) as c from table_name
select a, b, to_char(round(a*100/b, 2)) || '%' as c from table_name order by (a/b);
select a, b, round(a*100/b, 4) || '%' as c from table_name order by (a/b);
楼上都忽略了一个问题: 当数字小于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;
from table_name
order by c;
SQL> select round(12.827342384238476/3.3,4) xxx from dual; XXX
----------
3.8871SQL>
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()函数转换
select a,b,round(a/b,4) as c
from table_name
from table_name
order by (a/b);
from table_name
order by (a/b);
当数字小于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;