当前位置:首页 > 开发 > 数据库 > 正文

Oracle常用SQL语句

发表于: 2010-08-04   作者:cuisuqiang   来源:转载   浏览次数:
摘要: ----------////////////////// 通用函数 ////////////////////////------------- --nvl函数 如果 exp1 为空,则返回 exp2 Select nvl(comm,0) From emp --nullif函数 如果 exp1 和 exp2 相等,则返回 null ,否则返回 exp1 Select nulli
----------//////////////////   通用函数  ////////////////////////-------------

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

 

Oracle常用SQL语句

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
创建表空间 CREATE TABLESPACE mydb DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\mydb ' SIZE
目录 1)基本 2)数学函数 3)rownum 4)分页 5)时间处理 6)字符函数 7)to_number 8)聚合函数 9
SQL语言是操作数据库的基础语言,对于不同的数据库语言产品,SQL语言大多是通用的,本篇博客旨在介
字段合并: select EVFOUNDATIONTYPEA || EVFOUNDATIONTYPEB|| EVFOUNDATIONTYPEC ||EVFOUNDATIONTY
in(包含) SELECT * FROM `test` WHERE id in (1,2,4) 结果 not in(不包含) SELECT * FROM `test`
BETWEEN(范围内) SELECT * FROM `test` WHERE id BETWEEN 1 and 3 (1到3的范围内) 结果 not BETWE
SELECT * FROM `test` WHERE `remark` LIKE '%学%' 结果
查找表名: select * from tabs t where lower(t.table_name) like '%service%' select a.TABLE_NAME
最近做查询时,写的一条查询语句用了两个IN,导致tuexdo服务积压了不少,用户没骂就不错了。最后经
select city_std || '/' || stationname as name_std, city_std from station s, (select (select s
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号