/*-------------------------------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
--返回结果:
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