oracle数据库中的相关积累(持续更新)
nvl2(exp1,exp2,exp3) 虑空函数 检测表达式exp1,exp1不为空时值为exp2,空时为exp3 NVL2(表达式,不为空设值,为空设值) 小数转为百分数 select to_char(round(0.1*100,3),‘990.99‘) || ‘%‘ from dual 其中0.1为要转换的小数 添加虑空后 select to_char(round(nvl2(‘null‘,‘1‘,‘0‘)*100,3),‘990.99‘) || ‘%‘ from dual 类似if..else 的语句 case exp1 when … then value1…..end decode(exp1,’key1’,’value1’, ’key2’,’value2’,’其他’) oracle中发现的执行效率问题: 对于2条sql: sql1: select count(1) from v_ryxssj t where to_char(t.JZRQ,‘yyyy-MM-dd‘)=‘2015-03-31‘ sql2: select count(1) from v_ryxssj t where t.JZRQ=to_date(‘2015-03-31‘,‘yyyy/MM/dd‘); 数据量不小的时候,查询的速度差距很大 sql1用时31s,sql2用时1s 总结:尽量不要改变数据库中字段 关于时间的转换问题: 效率较高的是时间字段以数据库中的为基准。 数据中字符串型20140406,那么sql写为这样: select * from sale_task r where r.task_end_date>=’20140406’; 注意:oracle中的日期为字符串时,是可以互相比较的。 转为timestamp格式to_timestamp() 和to_timestamp_tz 数据库中为 20-3月 -15 07.23.18.794000 下午 select * from task_split_record r where r.split_time>=to_timestamp(‘2014‘,‘yyyy‘) and r.split_time<=to_timestamp_tz(‘2015‘,‘yyyy‘); 这句是查询2015年的数据 又比如:to_timestamp_tz(‘2015/04/01 11:55:10‘,‘yyyy/mm/dd HH24:MI:SS‘) http://blog.csdn.net/csh602583095/article/details/32130967
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。