oracle函数.docx
- 文档编号:157042
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:12
- 大小:159.38KB
oracle函数.docx
《oracle函数.docx》由会员分享,可在线阅读,更多相关《oracle函数.docx(12页珍藏版)》请在冰点文库上搜索。
oracle函数
函数
SQL函数是oracle的内置函数,它可以在各种SQL语句中使用。
我们可以使用哑表dual,哑表包含一个字段和一行记录,可以用来取得函数的返回值。
oracle内置函数可以进行:
数学计算、字符串拆分、数据类型转换、统计分析
一、Oracle内置函数分类
(一)单行函数
输入一行输出一行的函数
(二)多行函数
输入多行输出一行的函数
常用的函数:
数字函数、字符函数、日期时间函数、转换函数、其他函数
二、数字函数
各种数学函数ORACLE都可以计算如:
ABS(N)可以求绝对值。
三角函数SINCOSTANASINACOSATAN。
自然函数EXPLNLOG。
开方SQRT。
常用的数字函数有:
(一)Round(n[,m])
取四舍五入结果,当m省略的时候四舍五入到整数位
如:
Round(34.916,2)=34.92
Round(34.916)=35
(二)Trunc(n[,m])
截断数字,当m省略的时候直接取到整数位
如:
Trunc(34.916,2)=34.91
Trunc(34.916)=34
(三)MOD(m,n)
取余数,n=0返回结果为m
如:
Mod(1600,300)=100
Mod(1600,0)=1600
三、字符函数
(一)concat(str1,str2)
连接两个字符串
如:
注意:
跟“||”用法类似
(二)length(str1)
计算字符串的长度
如:
(三)Substr(str1,m[,n])
截取指定长度的字符串。
m:
开始长度n:
截取的字符串长度,如果为空,默认截取到字符串结尾。
如:
(四)Lpad(str1,n,str2)
左端填充字符串,返回指定长度为n的字符串
如:
(五)Rpad(str1,n,str2)
右端填充字符串,返回指定长度为n的字符串
如:
(六)INSTR(str1,str2[,n1[,n2]])
返回str2在str1中位置其中str1:
原字符串;str2:
要寻找的字符串;n1:
查询起始位置,正值表示从左到右,负值表示从右到左,省略不写,默认为1,n2:
第几个匹配项,省略不写,默认为1
如:
四、日期函数
Oracle数据库用内部数字格式存储日期:
世纪,年,月,日,小时,分钟和秒
默认日期显示格式是DD-MON-RR。
日期加上或减去数字,结果是另一个日期值
两个日期相减可以得到天数,注意:
日期+1等于明天+1/24等于下一小时
(一)MONTHS_BETWEEN(date1,date2)
计算date1和date2之间的月数,结果的小数部分表示月的一部分
如:
(二)ADD_MONTHS(date,n):
添加n个日历月到date。
n的值必须是整数,但可以是负的。
如:
(三)NEXT_DAY(date,‘char’)
计算在date之后的下一个周(‘char’)的指定天的日期。
char的值可能是一个表示一天的数或者是一个字符串。
如:
(四)last_day(date)
返回特定日期所在月份的最后一天
如
(五)Sysdate
用于返回当前系统时间,每一次执行sysdate的结果都不一样
如:
五、转换函数
在某些情况下,Oracle服务器使用一种数据类型的数据,而在另外一种情况下我们希望使用一种不同数据类型的数据,如果这种情况发生,Oracle服务器自动转换数据为期望的数据类型。
这种数据类型的转换可以被Oracle服务器隐式进行,或由用户显式进行。
显式数据类型转换用转换函数进行。
转换函数转换从一种数据类型转换值到另一种数据类型。
通常,函数名的构成遵循数据类型到数据类型的约定,第一个数据类型是输入数据类型;后一个数据类型是输出数据类型。
注:
尽管隐式数据类型转换是可用的,但建议你做显式数据类型转换以确保SQL语句的可靠性。
分类图如下:
(一)隐式数据类型转换
对于直接赋值,Oracle服务器能够自动地进行下面的转换:
(二)显式数据类型转换
转换图示如下:
(三)对日期使用TO_CHAR函数
格式如下:
使用时应注意:
1、必须加单引号,并且区分大小写
2、能够包含任一有效的日期格式元素
3、有一个fm元素用来删除填补的空或者前导零
4、用一个逗号与日期值分开
(四)对数字使用TO_CHAR函数
格式如下:
例一:
例二:
(五)使用TO_NUMBER和TO_DATE函数
格式如下:
六、空值函数
NVL(变量,常数)其中变量为任意变量,常数为任意类型。
当仅当变量为空值时,将结果输出为常数,如变量不为空,输出变量的值
如:
七、DECODE函数
DECODE(exp,s1,r1,s2,r2..s,r[,def])可以把它理解成一个增强型的ifelse,只不过它并不通过多行语句,而是在一个函数内实现ifelse的功能。
exp做为初始参数。
s做为对比值,相同则返回r,如果s有多个,则持续遍历所有s,直到某个条件为真为止,否则返回默认值def(如果指定了的话),如果没有默认值,并且前面的对比也都没有为真,则返回空。
例如:
emp表中如果JOB是SALEMAN,薪水增加10%;如果JOB是CLERK,薪水增加5%;如果JOB是ANALYST,薪水增加20%。
对于所有其他的工作角色,不增加薪水。
分析:
相当于用一个IF-THEN-ELSE语句来表达:
IFjob='SALEMAN'THEN
sal=sal*(1+10/100)
IFjob='CLERK'THEN
sal=sal*(1+5/100)
IFjob='ANALYST'THEN
sal=sal*(1+20/100)
ELSEsal=sal
解题:
方法一:
Selectename,job,sal,sal*(1+10/100)asr_salfromempwherejob=‘SALEMAN’;
Selectename,job,sal,sal*(1+5/100)asr_salfromempwherejob=‘CLERK’;
Selectename,job,sal,sal*(1+20/100)asr_salfromempwherejob=‘ANALYST’;
虽然符合题目但是得分别查询,看起来不方便
方法二:
使用decode函数
Selectename,job,sal,
decode(job,’SALEMAN’,sal*(1+10/100),‘CLERK’,sal*(1+5/100),‘ANALYST’,sal*(1+20/100),sal)asr_sal
fromemp;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 函数