主要是对项目中用过的 oracle 函数进行总结,并做出目录,方便后续项目是快速查找,提高效率。

01.Round (数值的四舍五入)

描述:传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果。

SELECT Round(Number,[Decimal_Places])FROM Dual;

param:
Number:欲处理的数值
Decimal_Places:四舍五入,小数取几位(预设为0)
Sample:

SELECT Round(123.456,1)FROM Dual;

output:123.5

SELECT Round(123.4567,3)FROM Dual;

output:123.458

02.Case ...When... (oracle 的if...else...)

case XX属性(可不填) when XX属性判断 then XX else XX end 你要赋值的表属性
Sample:
CASE lanage
WHEN lanage='java' then
''
else
''
end code;
case ... when 类似与程序语言中的 if(){}else{}

03.Nvl (数据表字段的判空处理)

Nvl(string, replace_with)
param:
string:欲处理字符串
replace_with:要替换的字符串
如果string为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL
可以用于字段判空后的处理操作,比如教室职称,如果字段为空,都默认为普通。
Sample:

select nvl(t.title,'普通') from teacher t;

04.Decode (字段名称的转换)

decode(XX属性,XX属性值,'要转译为的字符串')函数:
举例:

Select decode (t.title,'','普通','','高级','其他') from teacher
这个函数在项目中用的比较多,与上面的case_when..其实有点相似

05.树递归查询

select ...
from ....
start with ....[开始递归遍历的起点]
connect by prior [级联关系,比如 下级.parentid = 上级.id]
当前表字段=级联表字段 start with与connect by prior语句完成递归记录,形成一棵树形结构,通常可以在具有层次结构的表中使用。
(select c.swjg_dm
from dm_gy_swjg c
start with c.swjg_dm = ''
connect by prior c.swjg_dm = c.sjswjg_dm)

06.Trunc (截取日期和数字处理)

其具体的语法格式如下:

1)Trunc(Date[,Fmt])
Trunc(To_Date('24-Nov-199908:00Pm'),'Dd-Mon-YyyyHh:MiAm')='24-Nov-199912:00:00Am'
2)Trunc(ForNumber)
--Trunc函数返回处理后的数值,其工作机制与Round函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
Trunc(89.985,2)=89.98
Trunc(89.985)=89
Trunc(89.985,-1)=80
如果我们不需要从具体的表来取得

表中数据,而是单纯地为了得到一些我们想得到的信息,并要通过Select完成时,就要借助一个对象,这个对象,就是Dual;
就是将数值型或者日期型转化为字符型。
Sample:

To_Char(Number,'格式')
To_Char(Salary,’$99,999.99’)

07.Regexp_Substr (正则表达式的匹配)

Regexp_Substr(String,Pattern,Position,Occurrence,Modifier)
__Srcstr:需要进行正则处理的字符串
__Pattern:进行匹配的正则表达式
__Position:起始位置,从第几个字符开始正则表达式匹配(默认为1)
__Occurrence:标识第几个匹配组,默认为1
__Modifier:模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)

Sample:

Select Regexp_Substr('17,20,23','[^,]+',1,1,'i') As Str From Dual;

08.Substr (字符串的截取)

Substr(字符串,截取开始位置,截取长度)
Substr('HelloWorld',1,1)//返回结果为'h'*0和1都是表示截取的开始位置为第一个字符
Substr('HelloWorld',2,4)//返回结果为'Ello'

09.Replace('要更改字符串','被替换掉','替换')

Sample:

SelectReplace('','','')FromDual;

output:''

10.Instr (字符串中特定字符的索引位置,从1开始)

Instr(源字符串,目标字符串,起始位置,匹配序号)
Instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始到字符的结尾就结束。

Param:

Instr(String1,String2[,Start_Position[,Nth_Appearance]])
String1源字符串,要在此字符串中查找。
String2要在String1中查找的字符串.
Start_Position代表String1的哪个位置开始查找。此参数可选,如果省略默认为1.字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
Nth_Appearance代表要查找第几次出现的String2.此参数可选,如果省略,默认为1.如果为负数系统会报错。
SelectInstr('Syranmo','s')FromDual;--返回1
SelectInstr('Syranmo','Ra')FromDual;--返回3

11.add_months (获取特定月份)

add_months(data,number)函数输入日期上加上指定的几个月返回一个新的日期;
Sample:

add_months(to_date('15-Nov-1961','d-mon-yyyy'),1) 

output:  15-Dec-1961
add_months(sysdate, -1) 返回当前日期月份-1,就是上月

最新文章

  1. Linux命令-自动挂载文件/etc/fstab功能详解[转]
  2. 数据分析(8):Series介绍
  3. return和finally的执行顺序
  4. BestCoder Round #39
  5. 和为S的连续正数序列
  6. asp.net 实现在线打印功能,jQuery打印插件PrintArea实现自动分页
  7. 实现IDisposable接口的模式
  8. git python
  9. CSS Masking(翻译)
  10. JS encode decode
  11. 涂抹Oracle—Flashback
  12. javascript关键字加亮加连接
  13. 使用datapump 导出导入同义词(export and import synonym using datapump)
  14. 前端总结·基础篇·CSS(一)布局
  15. 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)
  16. Redis持久化方式的选择
  17. jieba库
  18. linux kernel内存碎片防治技术
  19. 008-Python-模块
  20. Prolog学习:基本概念

热门文章

  1. 如何分析解读systemstat dump产生的trc文件
  2. ORA-00600: internal error code, arguments: [kcblasm_1], [103], [], [], [], [], [], []
  3. column 'id' in field list is ambiguous
  4. 利用phpmyadmin修改mysql的root密码及如何进入修改密码后的phpmyadmin
  5. myBatis系列之四:关联数据的查询
  6. 001.libev安装及eclipse下添加libev库链接
  7. 006.udp转发包并代理访问服务器总结
  8. java 判断两个时间相差的天数
  9. SCCM 客户端的修复
  10. Nova: 虚机的块设备总结 [Nova Instance Block Device]