oracle汇总明细函数,Oracle数据库常用函数汇总

数据库函数集

一、substr截取字符串函数

格式1: substr(string , a,  b);

注:string为字符串类型,a和b为int类型

1、string 需要截取的字符串

2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)

3、b 要截取的字符串的长度

格式2:substr(string, a);

1、string 需要截取的字符串

2、a 可以理解为从第a个字符开始截取后面所有的字符串。

二、nvl函数处理空值

1、nvl(str1,str2)

如果str1为空则返回str2

2、nvl(str1,str2,str3)

如果str1位空则返回str3,如果不为空则返回str2

三、trim函数字符串去空格

1、LTRIM(str):将字符串左边的空格移除。

2、RTRIM(str): 将字符串右边的空格移除。

3、TRIM(str): 将字符串首尾两端的空格移除。

四、ROUND()处理数字四舍五入

语法:ROUND(number,num_digits)

其中Number是需要进行四舍五入的数字;Num_digits为指定的位数,按此位数进行四舍五入,

select round(sum (a.long_time)/3,0) r0 from dual;

五、trunc()截取日期/截取数字类型

1.【trunc(for dates)】TRUNC()函数处理日期

语法格式:TRUNC(date[,fmt])

其中:date 一个日期值;fmt 日期格式。

如:

select trunc(sysdate,'YY-MM-DD') from dual

2.【TRUNC(for number)】TRUNC()函数处理number型数字

语法格式:TRUNC(number[,decimals])

其中: number 待做截取处理的数值;decimals 指明需保留小数点后面的位数,可选项,忽略它则截去所有的小数部分。

注意:截取时并不对数据进行四舍五入。

如:

select trunc(123.567,2) from dual;--123.56,将小数点右边指定位数后面的截去;

select trunc(123.567,-2) from dual;--100,第二个参数可以为负数,表示将小数点左边指定位数后面的部分截去,即均以0记;

select trunc(123.567) from dual;--123,默认截去小数点后面的部分;

六、逻辑判断 case when ...then ...else...end

(case when 判断1 then 结果1 else 结果2

when 判断2 then 结果1 else 结果 2

...

end )

七、分组排序函数

1.row_number() over()

row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,

而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。

如:select t.*,row_number() over(partition by accno order by createDate) row_number from Test t

2.rank() over()

rank()是跳跃排序,有两个第二名时接下来就是第四名。

如:select t.*,rank() over(partition by accno order by createDate) rank from Test t

3.dense_rank() over()

dense_rank()也是连续排序,有两个第二名时仍然跟着第三名。

select t.*,dense_rank() over(partition by accno order by createDate) dense_rank from Test t

列:取出前四条申请的数据

select

createDate,

accno,

money,

num

from

(select t.*,row_number() over(partition by accno order by createDate) num from Test t) t1

where num<4

八、DECODE()函数用法:重新赋值

1.decode(条件,值1,赋值11,值2,赋值2,...赋值n,赋值n,x)

函数含义:

IF 条件=值1 THEN

RETURN(赋值1)

ELSIF 条件=值2 THEN

RETURN(赋值2)

......

ELSIF 条件=值n THEN

RETURN(赋值n)

ELSE

RETURN(赋值x)

END IF

如:

SELECT ID,DECODE(inParam,'para1','值1',

'para2','值2',

'para3','值3',

'para4','值4',

'para5','值5',

'para6') name FROM bank

对inParam进行判断,如果值为'para1'则重新赋值为‘值1’

如果不在判断范围内的值则赋值为‘para6’

待更新......

标签:over,数据库,汇总,number,rank,Oracle,截取,select,赋值

来源: https://www.cnblogs.com/wangdecheng/p/12195883.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值