oracle 字符串函数和日期函数


/*-------------------------------oracle函数----------------------------*/

/*---------------------------字符串函数-------------------------*/
--1.ascii(char) 返回指定字符转化为ascii码值

select ascii('a') as asc1,ascii('A') as asc2 from dual;

--返回结果:
----------
asc1 asc2
97    65

--2.char(n) 返回给定的ascii值转化为对应的字符

select char(65) as char1,char(97) as char2  from dual;

--返回结果:
char1 char2
---------------
 A      a

--3.concat(char1,char2) 返回连接的字符串

select concat('abc','123') as concat  from dual;

--返回结果:
concat
-------
abc123

--4.initcap(char) 将英文单词首字母转换为大写字母

select initcap('abc efg') as initcap from dual;

--返回结果:

initcap
--------
Abc Efg

--5.instr(char1,char2,[,n[,m]])从字符串char1中查找字符char2的位置,数值n为其实搜索位置,数值m为字符char2出现的次数,n和m省略不指定时默认值为1

select instr('abcefg','ce') as instr from dual;

--返回结果:

instr
-----
3


--6.length(char) 返回字符串的长度

select length('abcdef') as length from dual;

--结果:
length
------
7

--7. lower(char) 将字符串转化为小写字母

--8. upper(char) 将字符串转化为大写字母

--9. lpad(char1,n,char2) 在char1字符串的左边填充char2字符串,直至字符串的长度等于n,当char1的长度大于n时,将不会进行左填充。

select lpad('007',10,'x') as lpad from dual;

--结果:

lpad
----------
xxxxxxx007

--10.rpad(char1,n,char2) 在char1字符串的右边填充char2字符串,直至字符串的长度等于n,当char1的长度大于n时,将不会进行右填充。

select rpad('007',10,'*') as rpad from dual;

--结果:

rpad
----------
007*******

--11.ltrim() 将从左边第一个字符开始与char2相同的字符逐一去除,示例如下:

select ltrim('xxxxxxx007','x') as ltrim from dual;

--结果:
ltrim
------
007

--12. rtrim() 将从右边第一个字符开始与char2相同的字符逐一去除,示例如下:

select ltrim('007*******','*') as ltrim from dual;

--结果:

rtrim
------
007

--13. trim(char1 from char2) 对字符串char2的头尾两端截断char1字符串,示例如下:

select trim('x' from 'xxx20111213xxx') as trim from dual;

--结果:
trim
---------
20111213

--14. substr(char,m[,n]) 对字符串char从m的位置开始截取n个字符串,如果m是正数是从左边截取,如果m为负数是从右边开始截取,示例如下:

select substr('xxx007***',4,3) as substr from dual;

--结果:
substr
--------
007

--15.  replace(char1,char2[,char3]) 在字符串char1里查找是否有字符串char2的字符,如果有,将使用char3进行替换

select replace('acdef','e','@') as replace from dual;

--结果:

replace
--------
acd@f

--16. translate(char1,char2,char3)  对char1字符串,按照char2和char3字符位置的对应关系进行对照转换,示例如下:

select translate('abcdefghijk@#$','abcdefghij','123456890') as translate from dual;

--结果:

translate
-------------
1234567890@#$


/*----------------------------------------------------------------------日期函数---------------------------------------------------------------------------*/

--1. add_months(date,n) 用于对日期类型的date增加或减少n个月份,当n为正数时表示增加月份,当n为负数时表示减少月份,示例如下:

select add_months(date '2012-12-13',2) as add1,add_months(date '2012-12-13',-2) as add2 from dual

结果:
-------------
add1        add2
2012-2-13   2012-10-13  

--2. current_date 返回会话时区所对应的日期时间

select current_date from dual

current_date
------------
2015-07-21

--3. current_timestamp 用于返回当前会话时区所对应的日期时间,返回类型为时间戳类型,示例如下:

select current_timestamp from dual

--结果
current_timestamp
----------------------
此处略

--4. extract(format from date) 根据format的格式获取date日期里的指定日期数据

select extract(year from date '2012-12-31') as extract from dual;

extract
-------
2012


--5. last_day(date)   返回日期date所在月份的最后一天,示例如下:

select last_day(date '2012-12-21') as last_day from dual;

last_day
-----------
2012-12-31

--6.  months_between(date1,date2) 返回date1和date2这两个日期之间相差的月份数,当date1小于date2时返回的值是负数,示例如下:

select months_between(date '2012-1-1',date '2012-10-10') as months1,months_between(date '2012-10-10',date '2012-1-1') as months1 from dual

 months1     months2
-----------------------
-9.2903226  9.29032258

--7. next_day(date,char)  返回计算date时间开始的下一个星期 char的具体时间日期,date是一个时间,char是"星期一"至"星期日" 这七个中的一个。示例如下:

select next_day(date '2012-1-1','星期一') as next_day from dual;

next_day
-----------
2012-01-02


--8. round(date[,format]) 对日期date按format格式进行四舍五入返回结果日期格式

select round(date '2011-7-16','yyyy') as round1,round(date '2011-7-16','mm') as round2 from dual;

round1          round2
---------------------------
2012-01-01    2011-08-01

--9. sysdate 返回当前系统的日期时间,示例如下:

select sysdate from dual;

sysdate
-----------
2015-07-14

--10. systemstamp 返回当前系统的日期时间及时区,示例如下:

select systimestamp from dual;

--11.trunc(date[,format]) 对日期date进行截取返回结果日期格式,示例如下:

select trunc(date '2011-7-16,‘yyyy’')  as trunc1,trunc(date '2011-7-16','mm') as trunc2 from dual

--结果:

trunc1                 trunc2
---------------------------------------

2011-01-01   2011-07-01

            





















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值