我们今天总结一下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的神级函数。
原文:https://www.cnblogs.com/wyboke/p/15176767.html