常用oracle+sql,Oracle常用SQL语句

----------//   通用函数  -------------

--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

以上代码仅供参考

47bd445f59dfd930db6306649b258d1d.png

推荐您阅读更多有关于“ oraclesql函数 ”的文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值