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")