Oracle 单行函数

1.字符串函数

字符串的索引下标从1开始,这点和其它一些语言不同。

转换大小写函数:

select upper('aAbcjdJsadf') from dual; --大写
select lower('AAADDAERAYRARE') from dual; --小写

单词首字母大写函数(所有单词,以空格区分单词):

select initcap('today is signal day') from dual;
--结果:Today Is Singal Day

字符串连接函数(相当与字符串连接符:||):

select concat('today is',' signal day') from dual;--结果:today is singal day
截取字符串函数:

       substr(string, startindex, length)

       参数:String要操作的字符串,startindex截取字符串起始索引(索引从1开始),length要截取字符串的长度

select substr('moves like jagger', 7, 4) from dual;
select substr('what shape of your heart', 6) from dual;

获取字符串字节数或字符数:

select length('a中国') from dual;--字符数,结果:3
select lengthb('a中国') from dual;--字节数,结果:7(由于数据库字符集编码格式不同,结果不同,一个汉字为两个或三个字节)

查找一个字符串在另一个字符串中位置:

instr(str1, str2);

参数:要在str1中查找str2字符串出现的位置,如果找到则返回索引位置,否则,返回0

select instr('abcde','cd') from dual; --结果:3

字符串填充函数:

左填充:lpad(string, length , char)

右填充:rpad(string, length , char)

参数:string 要填充的字符串,length填充后字符串的长度,char要填充的字符串


--在字符串左右填充字符至指定长度
select lpad('abcd',10, '#') from dual;  --结果:######abcd
select rpad('abcd', 10, '*') from dual; --结果:abcd******

去除字符串两端特定字符

trim( char from str);

参数说明:char 是要去掉的字符,from 关键字,str要去字符的字符串

--去除两头某个字符
select trim('a' from 'aaabcdafdafjsaadda') from dual; --结果:bcdafdafjsaadd
字符串替换函数:

replace(string, char1, char2);

参数说明:string原字符串,char1被替换的字符,char2要替换的字符

select replace('adjfaadfjifec', 'a', '#') from dual;   --结果:#djf##dfjifec

2.时间函数

sysdate代表当前系统时间,假设当前系统时间为2013年11月12日 13点24分5秒

select sysdate from dual;

to_date()函数:

将字符串按照某种格式解析为日期类型:

 select * from t_student where birthday=to_date('1988/9/11', 'YYYY/MM/DD');

将日期时间转换成某种格式的字符串:

 select to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual;
说明:YYYY:四位年份 MM:月,DD:日,HH24:24小时制小时(HH为12小时至时间),MI:分钟,SS:秒

            to_char是将系统时间转换成特定格式的字符串,比如YYYY-MM-DD HH24:MI:SS,是将时间转换成字符串’2013-11-12 13:24:05‘

            第二个参数中的’-‘也可以改为'/'等字符。

可以对date类型的数据进行加减操作,如:sysdate-1,是将当前系统时间减去1天,即:2013-11-11 13:24:05

select to_char(sysdate-1, 'YYYY-MM-DD HH24:MI:SS') from dual;

同样,也可以对两个时间类型的数据进行相减(stu为学生表,birthday为学生生日)

select sysdate-stu.birthday 天, (sysdate-stu.birthday)/7 星期, (sysdate-stu.birthday)/30 月 from t_student stu;

months_between(date1, date2)函数:

用来计算两个日期相差的月份数

select months_between(sysdate, birthday),(sysdate-birthday)/30 月 from t_student; --第二中方式不准确,原因一个月不一定是30天

add_months()函数:

在指定的日期上增加几个月

select add_months(sysdate, 1) from dual; --将系统时间增加一个月,返回:2013-12-12 13:24:05

last_day()函数:

某个日期当月的最后一天

next_day()函数:

下个日期

select last_day(sysdate) from dual;
select next_day(sysdate, '星期日') from dual; --下个离今天最近的星期日
round()函数:

对日期按指定的方式进行四舍五入

select round(sysdate, 'month') from dual; --按月对日期进行四舍五入
select round(sysdate, 'year') from dual; --按年对日期进行四舍五入
trunc()函数:

对日期按指定的方式进行截取

select trunc(sysdate, 'month') from dual;
select trunc(sysdate, 'year') from dual; --对日期进行截断


3.数字函数

round()函数,对数字按指定的位数(从小数点计算,负数代表小数点之前,正数为小数点之后)进行四舍五入

trunc()函数,对数字按指定位数(位数计算方式同round()函数)进行截取

mod()函数,求余数

select round(55.554, -1) from dual; --结果:60
select round(56.444445) from dual;  --结果:56
select round(56.54565, 2) from dual; --结果:56.55
select trunc(56.3585) from dual; --结果:56
select trunc(56.3585, -1) from dual; --结果:50
select trunc(56.3585,2) from dual;--结果:56.35
select mod(100,3) from dual; 100对3求余,为1


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值