Oracle查询语句(二)
–排序 select * from emp order by sal;
–a 命令 appand 在上一句sql上追加语句。 a desc;
类似于
select * from emp order by sal desc;(降序排列)
单行函数 select lower('hellO WORld') 转小写,upper('hellO WORld') 转大写,initcap('hello world') 首字母大写 from dual;
–substr(a,b) 从a中,第b位开始取,取右边所有的字符 select substr('Hello World',4) from dual;
–length 字符数 lengthb 字节数 select length('上海') 字符数,lengthb('上海') 字节数
from dual
字符数 字节数
---------- ----------
2 4
–instr 在母串中查找子串,找到返回下标(从1开始),否则返回0 select instr('Hello World','ll') from dual;
INSTR('HELLOWORLD','LL')
------------------------
3
–lpad 左填充 rpad 右填充 select lpad('abcd',10,'*') 左,rpad('abcd','*') 右 from dual;
左 右
---------- ----------
******abcd abcd******
–trim 去掉前后指定的字符 select trim('H' from 'Hello WorldH') from dual;
–数字函数 select ROUND(45.926,2) 一,ROUND(45.926,1) 二,0) 三,-1) 四,-2) 五
from dual
–日期函数 select sysdate from dual;
SYSDATE
--------------
22-8月-16
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
TO_CHAR(SYSDATE,'YY
-------------------
2016-8-22 15:39:21
select systimestamp from dual;
SYSTIMESTAMP
----------------------------------------------------------
22-8月-16 03.40.05.406000 下午 +08:00
–systimestamp时间戳 select (sysdate-1) 昨天,sysdate 今天,(sysdate+1) 明天 from dual;
select hiredate+sysdate from emp; select hiredate+sysdate from emp
*
第 1 行出现错误:
ORA-00975: 不允许日期 + 日期
–计算工龄 select (sysdate-hiredate)/30,MONTHS_BETWEEN(sysdate,hiredate) from emp
–月份相加,ADD_MONTHS select ADD_MONTHS(sysdate,114) from dual;
ADD_MONTHS(SYS
--------------
21-2月 -26
–从今天开始算(2016.8.21星期日),下一个星期一 select next_day(sysdate,'星期一')from dual;
–从今天开始算(2016.8.21星期日),下一个星期二 select next_day(sysdate,'星期二')from dual;
–对日期进行四舍五入 select round(sysdate,'month')一,round(sysdate,'year')二 from dual;
–隐式转换的前提是:被转换对象必须是可以转换的。 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss "今天是"day')from dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS"今天是"DAY')
-----------------------------------------------------------
2016-08-21 10:28:37 今天是星期日
–查询员工的薪水:货币符号,两位小数,千位符 select sal,to_char(sal,'L9,999.99') from emp
–通用函数 select sal*12 薪水,nvl2(comm,comm,0)奖金 from emp;
–平均工资 select sum(sal)/count(*)一,avg(sal)二 from emp;
–平均奖金 select sum(comm)/count(*) 一,sum(comm)/count(comm)二,avg(comm)三 from emp;
–空值4.组函数会自动过滤空值 select count(*),count(comm) from emp; COUNT(*) COUNT(COMM)
---------------------
12 4
多行函数 select deptno,avg(sal) from emp group by depnto;
–group by多列:先按照第一列分;如果第一列相同,再按照第二列分 select deptno,avg(sal) from emp group by deptno having avg(sal)>2000
having和where的区别 select deptno,avg(sal) from emp group by deptno having deptno=10;
–group by的增强 group by rollup(a,b)
=
group by a,b
+
group by a
+
group by null
select deptno,job,sum(sal) from emp group by rollup(deptno,job);
–SQLPLUS支持报表功能 break on deptno skip 2
select deptno,sum(sal)
from emp
group by rollup(deptno,job); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |