易截截图软件、单文件、免安装、纯绿色、仅160KB

Oracle 百分比

日前遇到一个问题,需要对在Oracle数据库中查询出来的数值进行比率的计算。类似于如下的SQL:
Select Round((discount/Amount),2) from dual;
这样算出来的数字可以满足绝大部分的需求。但是对于不到1的数字,问题出来了......显示的类似于 .45样子的数据。0.45前面的0不见了。
以下总结了两种方法来解决缺0的问题。
第一种解决方案:
      SELECT DECODE (TRUNC (1/100),0, REPLACE (1/100, ''.'', ''0.''),TO_CHAR (1/100))
        from DUAL;
大家只要在1/100的地方替换成自己需要的百分数就可以了。
第二种解决方案:
SELECT RTrim(To_Char(1/100,''FM99999999990.9999''),''.'') from dual;
替换方式同上。
两种方式的比较:
第一种公式比较复杂,但可以处理通用的数值。
第二种看起来简单,不过格式化的值的位数一定要大于计算的位数才行。比如 SELECT RTrim(To_Char(200,''FM90.9999'') ,''.'') from dual; 显示的就是########,因为超过格式化的范围了。
不过一般来说我还是倾向于使用第二种,毕竟放宽一点就可以了^_^。
不知道谁还知道有更加好或者规范的写法?
文章出处:DIY部落(http://www.diybl.com/course/7_databases/oracle/oraclejs/2008224/100982.html)
SELECT RTrim(To_Char((1/3)*100,'FM99999999990.9999'),'.')||'%' from dual; 这样获得的是33.3333%
SELECT substr(RTrim(To_Char((1/3)*100,'FM99999999990.9999'),'.'),1,2) ||'%' from dual; 这样可以省略小数,得33%
SELECT RTrim(To_Char((round((1/3),2))*100,'FM99999999990.9999'),'.')||'%' from dual;与以上是同样效果,得33%.
其中把1/3换成你要的 我的是:单个选项的票数/总票数即可
当然单个选项的票数,总票数 也得你用你的SQL语句算出来就OK了.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wpplvhq/archive/2008/09/21/2956993.aspx


相关文档:

北大青鸟oracle学习笔记32

成员函数和过程
构造函数方法
-oracle的每个对象均有一个内置的构造函数方法
-用于创建对象的一个实例
-无需显式地定义
-与对象类型同名
定义对象类型
create or replace
type persontype as object
(
  id int,
  name varchar(20),
  member function ......

oracle 多表关联 的 update


表中要更新的数据,必须要通过和另一个表来关联才能确定要更新的条目,mssql可以直接用 from t1.id=t2.id 来更新,而Oracle则报错
最后google到这样,直接将关联后的表作为一个表来更新。。。。
update (select * from us_cm_cat_petrol_gun g 
       left join us_cm_ci c on g.machine_sn ......

ORACLE日期时间函数大全

ORACLE日期时间函数大全
   TO_DATE格式(以时间:2007-11-02   13:45:25为例)
  
        Year:     
        yy two digits 两位年       &nb ......

Oracle时间精确到时、分、秒处理方法

一般数据库中时间的格式为DATE类型,而我们从页面中获取的时间往往为String类型,这个就需要类型的转换。一般我们会通过调用 Java.text.SimpleDateFormat JAVA类来对其进行转换。这个JAVA类中我们经常用到的方法有两个,一个是format(将时间格式的数据转换成String类型),另一个就是 parse(将String类型转换成DATE类型)。我 ......

(转)oracle中的rownum


在Oracle中,要按特定条件查询前N条记录,用个rownum就搞定了。
select * from emp where rownum <= 5
而且书上也告诫,不能对rownum用">",这也就意味着,如果你想用
select * from emp where rownum > 5
则是失败的。要知道为什么会失败,则需要了解rownum背后的机制:
1 Oracle executes your quer ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号