日期:2014-05-16 浏览次数:20509 次
1.nvl
?
oracle的nvl函数的用法 通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值 select nvl(sum(t.dwxhl),1) from tb_jhde t where zydm=-1 这里关心的nvl的用法,nvl(arg,value)代表如果前面的arg的值为null那么返回的值为后面的value 如: NVL(a,b)就是判断a是否是NULL,如果不是返回a的值,如果是返回b的值 通过查询获得某个字段的合计值,如果这个值位null将给出一个预设的默认值 另一个有关的有用方法 declare i integer select nvl(sum(t.dwxhl),1) into i from tb_jhde t where zydm=-1 这样就可以把获得的合计值存储到变量i中,如果查询的值为null就把它的值设置为默认的1
?
2.rownum
?
rownum是oracle预处理字段,默认标序是1,只有记录集已经满足条件后才会进行后续编号。 例如: select rownum,tb.* from tb where rownum>1
?
3.to_number
?
To_number函数的格式如下: To_number(varchar2 or char,’format model’) To_number函数中也有很多预定义的固定格式: 9 代表一个数字 0 强迫0显示 $ 显示美元符号 L 强制显示一个当地的货币符号 . 显示一个小数点 , 显示一个千位分隔符号 下面是一些转换的例子: SQL> select to_number(’RMB234234.4350′,’L999999.0000′) from dual; TO_NUMBER(’RMB234234.4350′,’L999999.0000′) —————————————— 234234.435 另一个例子是: SQL> select to_number(’$123,233,455,623.3400′,’$999,999,999,999.0000′) from dual; TO_NUMBER(’$123,233,455,623.3400′,’$999,999,999,999.0000′) ———————————————————- 1.2323E+11
?
4.to_char
?
?
select to_char(to_date('1983-12-11','YYYY-MM-DD'),'DD') from dual; select to_char(sysdate,'YYYY/MM/DD') from dual;
?
5.to_date
?
?
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual; select to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-02-01','yyyy-mm-dd') from dual;?
?
6.Trunc
截取函数并不改变数据类型,即date截取以后还是date,char截取以后还是char.
?
?
TRUNC(date,format) TRUNC(date,''format'')未指定format时,将日期截为12 A.M.,不考虑是否在中午之前的条件。 且使用精确符,如:select trunc(SYSDATE,'dd') from dual;精确到天 以下语句可证明类型不变: select to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd') from dual minus select trunc(SYSDATE,'dd') from dual; 结果是空的。 TRUNC(for number) TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。 其具体的语法格式如下 TRUNC(number[,decimals]) 其中: number 待做截取处理的数值 decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分 下面是该函数的使用情况: TRUNC(89.985,2)=89.98 TRUNC(89.985)=89 TRUNC(89.985,-1)=80 注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。
?
?
举例: 对数字,日期进行的 SQL> select trunc(sysdate) from dual; TRUNC(SYSD ---------- 07-1月 -03 SQL> select trunc(sysdate,'mm') from dual; TRUNC(SYSD ---------- 01-1月 -03 SQL> select trunc(sysdate,'yy') from dual; TRUNC(SYSD ---------- 01-1月 -03 SQL> select trunc(234.5565) from dual; TRUNC(234.5565) --------------- 234 SQL> select trunc(sysdate,'D') from dual; TRUNC(SYSD ---------- 05-1月 -03 //////////////////////////////////////////////////////////////////////////// select trunc(sysdate ,'dd') from dual ; -- 2007-9-19 select trunc(sysdate ,'yyyy') from dual ; --2007-1-1 select trunc(sysdate ,'mm') from dual ; --2007-9-1?
?
?
?
?