ITPub博客

首页 > 数据库 > Oracle > oracle 学习笔记2

oracle 学习笔记2

原创 Oracle 作者:joy129 时间:2009-04-08 22:01:06 0 删除 编辑

数字函数

round(45.926,2) 45.93 四舍五入到小数点2位
trunc(45.926,2) 45.92 截断到小数点2位、
mod(1600,300) 100 返回除法运算的余数 常用于确定值为奇数还是偶数

练习 select round(445.923,2) ,round(445.923,1) ,round(445.923,-1),round(455.923,-2) from dual


处理日期

sysdate
select sysdate from dual 2009-3-31 22:18:31

months_between 2个日期之前的月数 add_months 加月数 last_day 月的最后天
select id,months_between(sysdate,up_time)
MOT,add_months(up_time,5) Addd,
last_day(up_time) Lastt from inch_cinema_res

转换函数

隐式数据类型转换

to_char(up_time, 'yyyy/mm/dd') 2009/03/04
to_char(up_time, 'YYYY-MM-DD YEAR-MONTH-DAY MON-DY') 2009-03-04 TWO THOUSAND NINE-3月 -星期三 3月 -星期三
日期格式: YYYY YEAR MM MONTH MON DY DAY DD

to_date(str,'yy-mm-dd')
to_number

嵌套函数
F3(F2(F1(col,arg1),arg2),arg3)

常规函数
nvl(playtime,'12') playtime 为空 结果为12

nvl(playtime,'13','12') playtime 不为空 结果为13 为空 结果为12

nullif(playtime,a,b) a=b 则结果为空 否则为a 相当于case

coalesce(a,b,c,d) a为空,则b; ab为空,则c; abc都为空,则d 相当于多个case

条件表达式
CASE函数

select user_id, name,user_integral,
case user_id when 10872 then user_integral+1000
when 8574 then user_integral+2000
when 8874 then user_integral+3000
else user_integral END resasd
from inch_user_base t where user_integral >100


10872 123 1123
8574 123 2123
8874 123 3123
7451 123 123

DECODE函数 同CASE

练习 3
select sysdate as "DATE" from dual 2009-3-31 23:23:17

select user_id, name,user_integral,1.15*user_integral as new_inte, 1.15*user_integral-user_integral as jian from inch_user_base t where user_integral >1000

四 显示多表数据
2表查询 等值联结
select a.id,a.name,b.id,b.res_id,b.path from inch_cinema_res a,inch_cinema_partres b where a.id = b.res_id order by a.id desc

非等值联结

select e.last_name,e.salary,j.grade_level from employees e,job_grades j where e.salary bewteen j.lowest_sal and j.highest_sal;

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21238756/viewspace-1020183/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle 学习笔记1
下一篇: oracle 学习笔记3
请登录后发表评论 登录
全部评论
  • 博文量
    7
  • 访问量
    12284