ORACLE SQL 单行函数

开发工具与关键技术:Oracle sql*plus PLSQL Developer
作者:蒙伟志
撰写时间:2019年03月28日

Sql中有不同的函数,在select中使用字符,数字,日期和转换函数,还有使用条件表达式。Sql函数又分为两种,一种是单行函数,一种是多行函数,其中单行函数可以操作数据对象,接受参数返回一个结果,只对一行进行转换,每行返回一个结果,可以转换数据类型,可以嵌套,参数可以一个或者多个,单行函数包括字符,数值,通用,转换和日期函数

字符函数
Lower(‘Text Lb’)--------->text lb (转小写)
Upper(‘text lb’)--------->TEXT LB (转大写)
Initcap(‘TEXT lb’)------->Text Lb(返回字符串并将字符串第一个字母变为大写)

字符控制函数
Concat(‘asb’,’nba’)------------->abcnba 合并两个字符串
Substr(‘asdfgh’1,3)--------------->asd 截取
Length(‘asdfgh’)------------------>6 获取字符长度
Instr(‘asdfgh’,’s’)------------- 选择字符所在位置
Lpad(‘asdfgh’,5,’’)------------>*****asdfgh 右对齐
Rpad(‘asdfgh’,5,’
’)------------>asdfgh***** 左对齐
Trim(‘a’from ‘asdfgh’)---------->sdfgh 选中字符去除
Replace(‘asdfgh’,’d’’m’)------>asmfgh 选中字符替换

数字函数
Round 四舍五入 Trunc 截断 Mod 求余
ORACLE SQL 单行函数
图1
日期
Oracle 中的日期型数据实际含有两个值: 日期和时间。

日期的数学运算
在一个日期上加上或者减去一个数字结果还是一个日期,
两个日期相减返回的差就是两个日期之间相差的天数
日期加日期没有意义,orcale中也不允许做日期的加法运算。
ORACLE SQL 单行函数
图2:日期的数学运算

日期函数
months_between(‘x-y’,‘x-y’) 两个日期相差的月数
add_months(’11-3月-19’,6)--------> ’11-9月-19’ 向指定日期中加上若干月数
next_day(‘’26-3月-19’,’星期二’)-----> ’1-4月-19’ 指定日期的下一个星期 * 对应的日期
lasy_day(‘26-3月-19’ )-------------->’ 31-3月-19’’ 本月最后一天
round(sysdate,’ 'MONTH’)-----> 01-AUG-95 日期四舍五入
trunk(‘sysdate’,’month’)--------> 01-AUG-95 日期截断

to_char函数对日期的转换
格式:
必须包含在快乐的单引号里面,而且大小写敏感。
可以随便包含有效的日期格式
日期之间用逗号隔开。

这里是引用
select to_char(sysdate,‘dd,mm,yyyy’) from student;
结果: 27,03,2019

To_date对字符的转换
先介绍to_date 函数中几种快乐的格式:
1.。。。。。9 数字
0 零
$ 美刀符
L 本地货币符号
. 小数点
, 千位符

To_date对数字转换

这里是引用
To_date(5465464,’$999,999.00’)
结果:$546,546.64

通用函数
Nvl(字段,0)--------------- ----------->如果字段是空值,会转换成0 ,非空则不转换
ORACLE SQL 单行函数
图3
Nvl2(字段1,字段2,字段3)—>如果字段1是空值,则转为字段3,否则返回字段2
Nullif(字段)---------------------- ------>获取字段长度

条件表达式
在sql 中使用if-then-else逻辑
使用两种方法
-case表达式
-decode 函数
Case 表达式:
ORACLE SQL 单行函数图4

嵌套函数
单个函数可以嵌套,嵌套函数的执行顺序是由里到外
ORACLE SQL 单行函数图5