ORACLE学习笔记三

ORACLE学习笔记三

dual--虚拟表

单行函数:
单行函数一共有五类,分别是:字符函数,数字函数,日期函数,转换函数,通用函数。

SQL> select * from scott.emp;

 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

 7369 SMITH CLERK 7902 17-12月-80 800 20

 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30

 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30

 7566 JONES MANAGER 7839 02-4月 -81 2975 20

 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30

 7698 BLAKE MANAGER 7839 01-5月 -81 2850 30

 7782 CLARK MANAGER 7839 09-6月 -81 2450 10

 7788 SCOTT ANALYST 7566 19-4月 -87 3000 20

 7839 KING PRESIDENT 17-11月-81 5000 10

 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30

 7876 ADAMS CLERK 7788 23-5月 -87 1100 20

 7900 JAMES CLERK 7698 03-12月-81 950 30

 7902 FORD ANALYST 7566 03-12月-81 3000 20

 7934 MILLER CLERK 7782 23-1月 -82 1300 10


1.字符函数:

UPPER():转大写
LOWER():转小写
INITCAP():首字母大写
LENGTH():求长度
REPLACE():替换
SUBSTR():截取字符串
例如:select upper(ename) from scott.emp; 
结果:
UPPER(ENAM
----------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER

例如:select replace(ename,'A','我') from emp;
结果:
REPLACE(ENAME,'A','
--------------------
SMITH
我LLEN
W我RD
JONES
M我RTIN
BL我KE
CL我RK
SCOTT
KING
TURNER
我D我MS
J我MES
FORD
MILLER

例如:select ename,substr(ename,2),substr(ename,2,3),substr(ename,-2) from emp;【注意substr(ename,-2)】的用法,-2表示为截取从后面

开始的两个字符。
结果:
ENAME SUBSTR(ENAME,2) SUBSTR SUBS
---------- ------------------ ------ ----
SMITH MITH MIT TH
ALLEN LLEN LLE EN
WARD ARD ARD RD
JONES ONES ONE ES
MARTIN ARTIN ART IN
BLAKE LAKE LAK KE
CLARK LARK LAR RK
SCOTT COTT COT TT
KING ING ING NG
TURNER URNER URN ER
ADAMS DAMS DAM MS
JAMES AMES AME ES
FORD ORD ORD RD
MILLER ILLER ILL ER

2.数字函数
ROUND():四舍五入
TRUNC():不四舍五入
MOD():取模运算
例如:select round(514.7524),round(514.7524,2),round(514.7524,-2),round(514.7524,-1) from dual;
结果:注意ROUND(514.7524,-2)和ROUND(514.7524,-1)的结果。
ROUND(514.7524) ROUND(514.7524,2) ROUND(514.7524,-2) ROUND(514.7524,-1)
--------------- ----------------- ------------------ ------------------
 515 514.75 500 510
例如:select trunc(514.7524),trunc(514.7524,2),trunc(514.7524,-2),trunc(514.7524,-1) from dual;
结果:
TRUNC(514.7524) TRUNC(514.7524,2) TRUNC(514.7524,-2) TRUNC(514.7524,-1)
--------------- ----------------- ------------------ ------------------
 514 514.75 500 510
例如:
SQL> select mod(14,2) from dual;

MOD(14,2)
----------
 0
例如:
SQL> select mod(14,3) from dual;

MOD(14,3)
----------
 2

3.日期函数
a.sysdate; 当前日期的获取
例如:
SQL> select sysdate,sysdate+1,sysdate-100 from dual;

SYSDATE SYSDATE+1 SYSDATE-100
-------------- -------------- --------------
11-10月-11 12-10月-11 03-7月 -11
b.last_day(日期) 获取日期的月份最后一天
例如:
select last_day(sysdate) from dual;
结果:
LAST_DAY(SYSDA SYSDATE
-------------- --------------
31-10月-11 11-10月-11
c.next_day(日期,星期X) 获取指定日期之后的下个星期X的日期
例如:select next_day(sysdate,'星期六') from dual;
结果:
NEXT_DAY(SYSDA
--------------
15-10月-11
d.add_months(日期,数字)获取若干月之后的日期
例如:select add_months(sysdate,3) from dual;
ADD_MONTHS(SYS
--------------
11-1月 -12
e.months_between(日期1,日期2)
例如:select months_between(sysdate,hiredate) from emp;
结果:
MONTHS_BETWEEN(SYSDATE,HIREDATE)
--------------------------------
 369.817491
 367.720716
 367.6562
 366.301362
 360.462652
 365.33362
 364.075555
 293.752975
 358.817491
 361.107813
 292.623942
 358.269104
 358.269104
 356.623942
4.转换函数
a.to_char(字符串|列,'格式字符串')
例如:select to_char(sysdate,'yyyy-mm-dd'), to_char(sysdate,'fmyyyy-mm-dd'), to_char(sysdate,'yyyy-mm-dd hh:mi:ss'), to_char

(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
结果:
TO_CHAR(SY TO_CHAR(SY TO_CHAR(SYSDATE,'YY TO_CHAR(SYSDATE,'YY
---------- ---------- ------------------- -------------------
2011-05-11 2011-5-11 2011-05-11 10:19:34 2011-05-11 22:19:34
例如:select to_char(789673512312312,'999,999,999,999,999'),to_char(789673512312312,'L999,999,999,999,999') from dual;
结果:
TO_CHAR(789673512312 TO_CHAR(789673512312312,'L999,
-------------------- ------------------------------
789,673,512,312,312 ¥789,673,512,312,312
b.to_date(字符串,格式) 字符串类型转换为日期类型
例如:select to_date('19410103','yyyy-mm-dd') from dual;
结果:
TO_DATE('19410
--------------
03-1月 -41 
c.to_number(字符串) 字符串类型转换为number类型
例如:select to_number('1') + to_number('2') , '1'+'2' from dual;
结果:
TO_NUMBER('1')+TO_NUMBER('2') '1'+'2'
----------------------------- ----------
 3 3

5.通用函数
a.nvl() 处理null
例如:select sal,comm,nvl(comm,0),(sal + nvl(comm,0))*12,nvl(comm,20) from emp;
结果:
SAL COMM NVL(COMM,0) (SAL+NVL(COMM,0))*12 NVL(COMM,20)
---- ---------- ----------- -------------------- ------------
800 0 9600 20
1600 300 300 22800 300
1250 500 500 21000 500
2975 0 35700 20
1250 1400 1400 31800 1400
2850 0 34200 20
2450 0 29400 20
3000 0 36000 20
5000 0 60000 20
1500 0 0 18000 0
1100 0 13200 20
950 0 11400 20
3000 0 36000 20
1300 0 15600 20
b.decode(列,判断值1,显示值1,判断值2,显示值2,。。。) 必须把此列中的所有情况全部写在后面,若不写则替换为空
例如:select dname,decode(dname,'ACCOUNTING','财务部','RESEARCH','研发部','SALES','销售部','OPERATIONS','管理部')as 全部替

换,decode(dname,'ACCOUNTING','财务部','SALES','销售部','OPERATIONS','管理部') as 部分替换 from dept;
结果:
DNAME 全部替 部分替
-------------- ------ ------
ACCOUNTING 财务部 财务部
RESEARCH 研发部
SALES 销售部 销售部
OPERATIONS 管理部 管理部





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值