Heycm

Heycm

Oracle常用函数

553
2020-07-21

Oracle常用函数。

单行函数

字符串函数

upper()

字母转大写

select upper('ok') from dual; # OK

lower()

字母转小写

select lower('OK') from dual; # ok

数值函数

round(n)

四舍五入

select round(16.18) from dual; # 16

round(n, m)

四舍五入,保留m位数

select round(16.18, 1) from dual; # 16.2

m可取负值,表示小数点往前保留

select round(16.18, -1) from dual; # 17
select round(16.18, -2) from dual; # 0
select round(66.18, -2) from dual; # 100

trunc(n, m)

直接截取,不看四舍五入

select trunc(16.18) from dual; # 16
select trunc(16.18, 1) from dual; # 16.1
select trunc(16.18, -1) from dual; # 16

mod(n, m)

求余

select mod(10, 3) from dual; # 1

日期函数

日期之间可直接加减,也可以直接与数字加减

months_between(date1, date2)

两个日期之间间隔的月数,返回数字

to_char(date, format)

将日期按照指定格式转换为字符串

# 2020-07-21 05:29:16
select to_char(sysdate, 'yyyy-mm-dd hh:mi:ss') from dual;
# 2020-7-21 5:29:16
select to_char(sysdate, 'fm yyyy-mm-dd hh:mi:ss') from dual;
# 2020-07-21 17:29:16
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual;

to_date(str, format)

字符串转日期

select to_char('2020-07-21 17:29:16', 'yyyy-mm-dd hh24:mi:ss') from dual;

通用函数

nvl(n, m)

如果n是null,则返回m;如果n不是null,返回n。

多行函数(聚合函数)

count(1) 计数

sum() 求和

avg() 求平均

max() 取最大值

min() 取最小值

条件表达式

case A

​ when B then C

​ when D then E

​ [ else F ]

​ end

等值判断,当A=B时,执行C;当A=D时,执行E;end为结束标志。

类似 if...else if...else...

case

​ when A>B then C

​ when A>D then E

​ [ else F ]

​ end

当有范围性判断时,case后面不要跟任何东西,把判断放到when后边。

oracle专用表达式

decode( A,

B, C,

D, E

[,F]

)

效果等同case等值判断。