takes courage:oracle新手入门指导之三续——精简ORACLE常用函数大全[天源迪科论坛]

来源:百度文库 编辑:偶看新闻 时间:2024/05/08 12:22:28
oracle新手入门指导之三续——精简ORACLE常用函数大全

字符串大小写转换函数
 函数 结果 功能说明
 OWER(‘SQ Course‘)sq course 将所有字符变为小写
UPPER(‘SQ Course‘)SQ COURSE 将所有字符变为大写
INITCAP(‘SQ Course‘)Sq Course 每个单词的第一个字符大写其余的小写

字符串处理函数
 函数 结果 功能说明
CONCAT(‘Good‘,‘String‘)GoodString 连接两个字符串,该函数的参数只能有两个,类似||的作用
SUBSTR(‘String‘,1,3) Str 取字符串的子串
 ENGTH(‘String‘) 6 求字符串的长度
INSTR(‘String‘,‘r‘)3 if是子串,返回(其首字符)在原串中首次出现的位置,e se返回0
 PAD(sa ary,10,‘*‘)******5000 将sa ary以10个字符输出,不足10位的在左边补‘*‘,超出10位时,
 从高位往低位输出10位,多余的位忽略掉不输出
 
其他有用的字符串处理函数,将以实际应用的方式说明
SQ >se ectrep ace(‘itpuborac e‘,‘orac e‘,‘training‘) itpubfromdua ;//字符串替换
ITPUB
--------------
itpubtraining

SQ >se ecttrans ate(‘ThisistrainingofitpubinBeijing!‘,‘abcde‘,‘12345‘)itpubfromdua ;
ITPUB
--------------------------------------------
Thisistr1iningofitpu2inB5ijing!

SQ >se ectf oor(4.55)fromdua ;
F OOR(4.55)
-----------
 4
 
SQ >se ectcei (4.55)fromdua ;
CEI (4.55)
----------
 5
 
ROUND:4舍5入到指定的小数位
ROUND(45.926,2) 45.93
TRUNC:将值截断到指定的小数位
TRUNC(45.926,2) 45.92
MOD: 返回相除后的余数
MOD(1600,300) 100

日期
函数 描述
MONTHS_BETWEEN两日期相差多少月
ADD_MONTHS 加月份到日期
NEXT_DAY 指定日期的下一天
 AST_DAY 一个月中的最后一天
ROUND Round日期
TRUNC Truncate日期

 操作 结果
MONTHS_BETWEEN(‘01-SEP-95‘,‘11-JAN-94‘) 19.6774194
ADD_MONTHS(‘11-JAN-94‘,6) ‘11-JU -94‘
NEXT_DAY(‘01-SEP-95‘,‘FRIDAY‘) ‘08-SEP-95‘
 AST_DAY(‘01-SEP-95‘) ‘30-SEP-95‘
ROUND(‘25-JU -95‘,‘MONTH‘) 01-AUG-95
ROUND(‘25-JU -95‘,‘YEAR‘)01-JAN-96
TRUNC(‘25-JU -95‘,‘MONTH‘) 01-JU -95
TRUNC(‘25-JU -95‘,‘YEAR‘)01-JAN-95

取上周4的日期值
se ecttrunc(sysdate,‘D‘)-3fromdua ;
trunc(sysdate,‘D‘),截取到本周的第一天(0:00)
trunc(sysdate,‘M‘),截取到本月的第一天(0:00)
trunc(sysdate,‘DD‘), 截取到本日的0:00
trunc(sysdate,‘yyyy‘),得到今年的第一天的0:00.

Orac e以内部数字格式存储日期:世纪,年,月,日,小时,分钟,秒
缺省的日期格式是DD-MON-YY
SYSDATE是返回日期和时间的函数
DUA 是用来查看SYSDATE的虚表
十进制与十六进制
EYG E@vi en>se ect to_char(2463,‘xxxx‘)fromdua ;
十六进制与十进制
EYG E@vi en>se ect to_number(‘99f‘,‘xxxx‘)fromdua ;

使用TO_CHAR函数处理日期
SQ >SE ECTename, TO_CHAR(hiredate,‘fmDDMonthYYYY‘)HIREDATEFROM emp;
ENAME HIREDATE
---------------------------
KING 17November1981
B AKE 1May1981
C ARK 9June1981
JONES 2Apri 1981
MARTIN28September1981
A  EN 20February1981
...
14rowsse ected.

将空值转换为实际的值
数据格式可以是日期,字符,数字
数据类型必须匹配
NV (comm,0)//comm为空,则转化为0;否则不转化,还是原数.
NV (hiredate,‘01-JAN-97‘)
NV (job,‘NoJobYet‘)
NV 2(expr1,expr2,expr3)
如果expr1不为Nu  ,返回expr2,如果expr1为Nu  ,返回expr3。
expr1可以为任何数据类型
NU F(expr1,expr2)
比较两个表达式,如果相等返回空值,如果不等返回第一个值。
COA ESCE(expr1,expr2,...,exprn)
返回表达式列表里的第一个非空表达式

CASE表达式:
实现逻辑 IF-THEN-E SE
CASEexprWHENcomparison_expr1THENreturn_expr1
[WHENcomparison_expr2THENreturn_expr2
WHENcomparison_exprnTHENreturn_exprn
E SEe se_expr]END //同decode功能类似
SQ >se ectename,sa ,
 2 casejobWHEN‘MANAGER‘THEN1.1*sa 
 3 WHEN‘ANA YST‘THEN1.2*SA 
 4 WHEN‘C ERK‘THEN1.5*SA 
 5 E SEsa END"NEW_SA "
 6 fromemp;
 
ENAME SA  NEW_SA 
-------------------------------------
SMITH 800 1200
A  EN 1600 1600
WARD 1250 1250
JONES 2975 3272.5
MARTIN 1250 1250
B AKE 2850 3135
C ARK 2450 2695
SCOTT 3000 3600
KING 5000 5000
TURNER 1500 1500
ADAMS 1100 1650
JAMES 950 1425
FORD 3000 3600
MI  ER 1300 1950
...
14rowsse ected.