我们今天总结一下Oracle的内置函数,我把Oracle常用的一些函数拿出来晒一晒。如有不足敬请补充,

 

 

数值型函数

abs(x) ——取反
floor(x),round(x,[y]),ceil(x) ——取整老三样
trunc(x,[y]) ——按精度截取

round(x,[y]) y是按保留若干小数位四舍五入,当然也可以取负数向整数四舍五入

power(x,y),exp(x) ——求幂
log(x,y),ln(x) ——求对数
mod(x,y) ——求余
sqrt(x) ——求平方根

字符型函数

ASCII(c),chr(num)——ASCII 与 字符函数
concat(str1,str2)——拼接函数
lower(str),upper(str),initcap(str)——大小写转换函数

initcap 是将字符串中每个单词首字母大写。是每个能够识别出来的单词。

instr(str,substr,offset,times) ——查找子串位置

offset是查找起点,times是第几次出现。默认从1开始找,找第一次出现
insertb(...) 是将多节字符(汉字,全角字符等)按两个字符算

length(str),lengthb(str)——求长
lpad(str,n,c),rpad(str,n,c)——补齐

str长度不满n时,在左或右用c补齐

ltrim(str[,c]),rtrim(str[,c])——去字符

将字符串左或右对应字符去除,默认去除空格
trim(c from str)

replace(str,str2[,rep]) ——替换

默认用空替换。

substr(str,offset,length)——截取字符串

offset是截取起点,length是截取长度
substrb(...)

日期型函数

sysdate,current_date,current_timestamp,localtimestamp——系统当前时间,时间戳
add_months(d,n)——月份累加
last_day(d)——获取目标月份的最后一天
months_between(d1,d2)——获取2个日期间的相差月份数

前面减后面,精确到小数两位

round(d[,c]),trunc(d[,c])——按精度获取时间

c: day,month,q(季度),year,yyyy/yyy/yy/y(y位数表示精度)

extract(c from d)——抽取日期

c:second,minute,hour,day,month,year
d:date '2002-1-1' 或 timestamp '2002-1-1 10:10:10'

//Oracle允许日期直接加减

SQL> select sysdate,sysdate+1 from dual;

SYSDATE            SYSDATE+1
------------------ ------------------
19-AUG-21          20-AUG-21
//直接+1就是加1天,如果加1小时,就是+(1/24)

 

转换函数

convert(str,set1,set2)——转换字符集,后者转前者
to_char(x[,c1[,c2]])——日期或数字转换为字符串

x:日期或数字;c1:格式;c2:NLS设置参数,一般不用

to_date(str[,c1[,c2]])——字符串转日期

SQL> select to_char(sysdate,'yyyy-MM-dd HH:mm:ss') from dual;

TO_CHAR(SYSDATE,'YYYY-MM-DDHH:MM:SS')
---------------------------------------------------------
2021-08-19 10:08:25


SQL> select to_date('2002-2-2','yyyy.mm.dd') from dual;

TO_DATE('2002-2-2'
------------------
02-FEB-02

to_number(x)
chartorowid(),rowidtochar()——rowid转换

rowid,rownum是Oracle中出现的一种伪列,rowid记录每一条记录的物理地址;
rownum则是类似主键,为每条记录标记行数,可以直接通过select查询

to_multi_byte()——半角转全角
to_single_byte()——全角转半角

这些都是比较常见也比较常用的函数。下一段将是Oracle的神级函数。