设为首页 收藏本站
查看: 1152|回复: 0

[经验分享] Oracle base SQL语句

[复制链接]

尚未签到

发表于 2016-7-20 08:51:15 | 显示全部楼层 |阅读模式
----------常用函数  -------------
--nvl函数  如果 exp1 为空,则返回 exp2
Select nvl(comm,0) From emp
--nullif函数  如果 exp1 和 exp2 相等,则返回 null ,否则返回 exp1
Select nullif(1,2) From dual
--nvl2函数  如果 exp1 不为空,则返回 exp2 ,否则返回 exp3
Select empno,ename,sal,comm,nvl2(comm,sal+comm,sal) total From emp
--coalesce函数  遇到非空即返回
Select empno,ename,sal,comm,coalesce(sal+comm,sal,0) total From emp
--case函数
Select empno,ename,sal,
Case deptno
When 10 Then '财务部'
When 20 Then '研发部'
When 30 Then '销售部'
Else '未知部门'
End 部门
From emp;
--decode函数
Select empno,ename,sal,
decode(deptno,10,'财务部',
20,'研发部',
30,'销售部',
'未知部门'
) 部门
From emp;

--多行子查询,子查询返回不是一个结果的
Select * From emp Where sal>Any(Select Avg(sal) From emp Group By deptno);
Select * From emp Where sal>All(Select Avg(sal) From emp Group By deptno);
Select * From emp Where job In (Select job From emp Where ename='MARTIN' Or ename='SMTTH')
--分页查询第一种写法
select * from (
select rownum no,e.* from (
select * from emp order by sal Desc
) e where rownum<=5
) where no>=3;
--分页查询第二种写法
select * from (
select rownum no,e.* from (
select * from emp order by sal Desc
) e
) where no>=3 and no<=5;
--随机返回五行数据
Select * From (
Select empno,ename,job From emp Order By dbms_random.value()      
) Where Rownum <= 5;
Select * From emp Order By sal

--首字母转为大写
Select initcap(ename) From emp
--连接字符串
Select concat('hello ','word') From dual
--截取字符串
Select substr(ename,-3,3) From emp
--四舍五入
Select round(789.567,-2) From dual
--直接取几位,不四舍五入
Select trunc(789.576,-2) From dual
--雇佣了几周
Select round((Sysdate-hiredate)/7) From emp
--年 月 日
Select empno,ename,to_char(hiredate,'yyyy') Year,to_char(hiredate,'mm') months,to_char(hiredate,'dd') Day From emp
--格式化为制定时间格式
Select empno,ename,to_char(hiredate,'yyyy-mm-dd') From emp
--去零
Select empno,ename,to_char(hiredate,'fmyyyy-mm-dd') From emp
--美元
Select empno,ename,to_char(sal,'$99,999') From emp
--本地
Select empno,ename,to_char(sal,'L99,999') From emp
--年薪资 (工资+奖金)×12
Select empno,ename,nvl(comm,0),(sal+nvl(comm,0))*12 income From emp
--奖金不为空
Select Distinct job From emp Where comm Is Not Null
--每月倒数第三天雇佣的员工信息
Select * From emp Where Last_day(hiredate)-2=hiredate
--最高12年前雇佣的,今天和雇佣日期之间总月份/12
Select * From emp Where months_between(Sysdate,hiredate)/12 > 12
--雇佣了多少天
Select ename,round(Sysdate-hiredate) From emp
Select * From emp
--工作年限,月限
Select ename,trunc(months_between(Sysdate,hiredate)/12) Year,
trunc(Mod(months_between(Sysdate,hiredate),12)) months
From emp

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-246610-1-1.html 上篇帖子: Oracle 触发器详解 5 下篇帖子: Oracle碎碎念
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表