LAST_DAY(2001-03-01)=2001-03-31
MONTH_BETWEEN(2001-01-01,2000-12-01)= -1
SELECT SYSDATE(),SNO,SNAME FROM STUDENT;//返回系统当前时间以及student表中的学生编号和学生姓名
例如:
INSERT INTO BOOK(NAME,BOOK,DAT) SELECT :NAME,:BOOK,SYSDATE FROM DUAL;
通过SELECT * FROM BOOK WHERE DAT=:DD;想查询一天的数据,是错误的! 应该:SELECT * FROM BOOK WHERE TRUNC(DAT,’DD’)=:DD 特别说明这句话不能使用索引,最好的办法是
SELECT * FROM BOOK WHERE DATE>=:DD AND DATE<:DD+1; 九、判断是否为空函数
格式:NVL(表达式1,表达式2):当表达式1为空时,返回表达式2,否则返回表达式1。
例如:如果course=null则NVL(COURSE,0)=0 如果COURSE=10则NVL(COURSE,0)=10 例:求电量、电费的和
select sum(nvl(dlhj,0)),sum(nvl(ysdf,0)),sum(nvl(ltdf,0))
from pshis.kh_hjdfxx a where a.khbh=b.khbh and ny=b.ssny
十、转化函数:
日期转化字符TO_CHAR(DATE,[FMT]) 数值转化字符TO_CHAR(N,[FMT]) 字符转化日期TO_DATE(CHAR,[FMT]) 字符转化数值TO_NUMBER(CHAR)
求最大值GREATEST(表达式1,表达式2……) 求最小值LEAST(表达式1,表达式2……) FMT=’YYYYMMDDHHMISS’//oracle中分的表示
例如:
TO_CHAR(2001-02-03,’YY.MM.DD’)=’01.02.03’
To_char(1233.22,’000000.00’)=’_001233.22’ 带空格 TO_CHAR(1233.22,’999999.99’)=’ 1233.22’带空格 to_char(1233.22,’fm000000.00’)=’001233.22’去空格 to_char(1233.22,’fm999999.99’)=’ 1233.22’ 去空格 TO_DATE(‘20000203’,’YYYYMMDD’)=2000.02.03 TO_NUMBER(‘12312’)+10=12322 GREATEST(1,2,3,4,5,6)=6
十一、 条件函数: 1.case when
格式:case when c1>c2 then c3 else c4 end
Select case when c1>1 then c2 else 23 end from table1; 不建议太多使用这个函数,程序不方便阅读 2.decode
格式:decode(input_value,value,result[,value,result…][,default_result]); 其中:
input_value :试图处理的数值。DECODE函数将该数值与一系列的序偶相比较,以决定最后的返回结果
value :是一组成序偶的数值。如果输入数值与之匹配成功,则相应的结果将被返回。对应一个空的返回值,可以使 用关键字NULL于之对应
26
result :是一组成序偶的结果值
default_result :未能与任何一序偶匹配成功时,函数返回的默认值。 不建议太多使用这个函数,程序不方便阅读
27