Oracle - 分享一些常用函数

1. 判断函数

--当字段或字段的运算的值等于值1时返回返回值1,当字段或字段的运算的值等于值二时返回返回值2...当条件都不满足时返回缺省值
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
--当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3​
decode(字段或字段的运算,值1,值2,值3)
case when 条件 and 条件 then 满足时返回值 else 不满足时返回值 end

2. 增加标识列

--加一个ID列
select sys_guid() as id... from 表...
--加一个列,数据顺序为1,2,3,4... ...
--对 ROWNUM 只能使用 < 或 <=, 而是用 =, >, >= 都将不能返回任何数据.
select rownum as ron... from 表...

3. 非空判断

--nvl 当FCPBH为null时返回0
SELECT NVL(ER_ZZRKDMX_BASE.FCPBH, 0) from ER_ZZRKDMX_BASE
--nvl2 当FCPBH不为null时返回1,为null返回0
SELECT NVL2(ER_ZZRKDMX_BASE.FCPBH, 1, 0) from ER_ZZRKDMX_BASE​

4. 字符串函数

--将字符串里的字母全部转化为“小写”
LOWER('字符串')​
--将字符串里的字母全部转化为“大写”
UPPER('字符串')
--将字符串里的字母的“首字母”转化为“大写”
INITCAP('字符串')
--将“Hello字符串”与“Word字符串”拼接到一起
concat('Hello','Word')
--截取字符串,下面截取“HelloWord”从第“1”位开始“向右”截取5位,输出:Hello,如果将“1”变为负数就是从“右面开始”向“右”截取几位,“5”不写则默认截取到最后
SUBSTR('HelloWord', 1, 5)​
--TO_NUMBER 将字符串转化为number格式,9的个数为上限
TO_NUMBER('1234567.89', '9999999.99')
--round 保留几位小数位 四舍五入
round(1.58548,1)

5. 日期函数

--系统时间精确到时分秒
SYSDATE
--计算“当前时间”与“时间字段”相差的“天数”,输出为number格式
SYSDATE-“时间字段”
--计算“当前时间”与“时间字段”相差的“月份”,输出为number格式
MONTHS_BETWEEN(SYSDATE, “时间字段”)
--将时间格式转化为'YYYY-MM-dd'格式
TO_CHAR( SYSDATE,'YYYY-MM-dd')
--当前时间增加6个“月份”,输出为日期格式
ADD_MONTHS(SYSDATE, 6)
--从今天开始往后的第一个周日是几月几号,根据系统日期语言改变第二个值是英文还是中文
NEXT_DAY(SYSDATE, '星期日')
--四舍五入,当前如果超过半个月则返回下个月初一号,没超过则返回这个月初一号,第二个参数可以换成'year'等都可计算
ROUND(SYSDATE, 'Month')
--返回括号内所在时间月份的“第一天”,第二个参数可以换成'year'等都可计算
TRUNC(SYSDATE, 'Month')
--返回括号内所在时间月份的“最后一天”,返回为日期格式
LAST_DAY(SYSDATE)

6. 组函数

--最大值
MAX("sal")
--最小值
MIN("sal")
--求和
SUM("sal")
posted @ 2020-11-09 17:55  NoahEavlia  阅读(63)  评论(0编辑  收藏  举报