|
--数字函数
·floor(n):返回小于等于n的最大整数。
·ceil(n):返回大于等于n的最小整数。
·mod(m,n):返回m/n的余数,m,n可以为浮点数。
·round(n[,integer]):对n进行四舍五入,如果integer>0则精确到小数点后integer位,否则精确到小数点前integer位,缺省为0(精确到整数部分)。
SELECT floor(123.5),floor(123.0),floor(123),floor(-123.5),floor(-123.0),floor(-123.1),ceil(123.5),ceil(123.0),ceil(123),ceil(-123.5),ceil(-123.0),ceil(-123.1) FROM dual; --取小于入参的最大整数,大于入参的最小整数
SELECT round(123.5),round(123.253,2),round(-123.5),round(-123.253,2) FROM dual;--四舍五入
SELECT MOD(3,2),MOD(3,4) FROM dual;--取余
--字符函数
instr(string,substring[,position][,occurrence]:返回substring在string中的位置,返回整数。
substr(string,position[,substring_length]):从position的位置截取,substring_length个字符的子串,如果substring_length缺省或大于剩下所有字符的长度,则截取剩下所有的字符。
lower(char):将char全部转换成小写。
upper(char):将char全部转换成大写。
Length(char):返回char有多少个字符,如果char为null,则返回null。
ltrim(char):去除char的左空格;
rtrim(char):去除char的右空格;
trim(char):去除左右空格
replace(char,search_string[,replacement_string]):解决trim不能去除中间空格的问题,用 replacement_string替换char中所有的search_string,如果replacement_string缺省则默认为null
chr(n):将ascii码值转换成字符;
ascii(char):将char转换成对应的ascii码;
lpad(char1,n[,char2]):如果char1的长度>=n,则返回char1的前n位的子串,否则,在左边用n-char1个char2补足,如果char2缺省,则自动填充空格;
rpad(char1,n[,char2]):与lpad类似,在右侧填充
nvl(“String1”,’String2’):当String1 为空时就返回 String2 ,当String1不为空时就返回String1.
Sub(‘String’,int1,int 2): 从字符串String的第int1个下标开始向后截取int2位。
SELECT INITCAP ('initcap'),INITCAP ('%$initcap'),INITCAP ('444initcap'),INITCAP ('%%444initcap') FROM dual;--首字母(数字或字母)转换成大写,如果首字母为非数字、字母,则将其看做是空格
SELECT concat('A','B C'),'A'||'B C' FROM dual;--连接符,必须2个入参
SELECT CHR(97),CHR((256+97)),chr(12.5),ascii('a'),ascii('abc'),ascii('&') FROM dual;--chr和ascii函数
SELECT upper('dd123dd@#DD'),lower('ddd,DDDD45666') FROM dual;--只对字母操作,大小写互转
SELECT ltrim(' fff fff '),rtrim(' fff fff '),TRIM(' fff fff ') ,TRIM(' ' FROM ' fff fff '),TRIM(0 FROM ' 00012300001230000 '),TRIM(0 FROM '00012300001230000') FROM dual;--trim,ltrim,和rtrim只能对头操作
SELECT replace(REPLACE(' 00012300001230000 ',0,''),' ',''),REPLACE(' 123456 ',' ','a'),replace(' 123456 ',' ') FROM dual;--用特定的字符(缺省为'')替换源字符串中的指定字符
SELECT LPAD('Page 1',15,'*.') ,LPAD('Page 1',15),LPAD('Page 1',15,'*.') ,rPAD('Page 1',15),LPAD('Page 1',15,'*.') ,rPAD('Page 1',15,'*.'),lpad('123456',3,'d'),rpad('1233456',4,'d') FROM DUAL;--lpad,prpad,如果第二个参数>=第一个参数的长度,则在左边或右边补差额个第三个参数的字符,如果第三个字符缺省则用空格填充,返回值的长度等于第二个参数的值;否则则从第一个字符开始截取第一个参数的第二个参数长度的字符返回,返回值的长度等于第二个参数的值
SELECT length(LPAD('Page 1',15,'*.')) ,length(LPAD('Page 1',15)),length(LPAD('Page 1',15,'*.')) ,length(rPAD('Page 1',15)),length(LPAD('Page 1',15,'*.')) ,length(rPAD('Page 1',15,'*.')),length(lpad('123456',3,'d')),length(rpad('1233456',4,'d')) FROM DUAL;--只有一个字符型的入参,求字符的长度
SELECT substr('123456789',0),substr('123456789',1),substr('123456789',0,2),substr('123456789',1,2),substr('123456789',1,9),substr('123456789',1,11),substr('123456789',-1),substr('123456789',-1,2),substr('123456789',-5,5),substr('123456789',-1,10) FROM dual;--截子串函数:至少有2个入参,如果第二个入参为正,则从第2个值的位置开始(如果为负,则从倒数第2个值的位置)截取第三个值的长度个字节
SELECT instr('CORPORATE FLOOR','OR'),instr('CORPORATE FLOOR','OR',3),instr('CORPORATE FLOOR','OR', 3, 2),instr('CORPORATE FLOOR','OR', 3, 5),instr('CORPORATE FLOOR','OR', -3, 2) FROM dual;--一个字串在目标字符串的位置,从第几个开始找,按照什么顺序,如果不存在则返回0、
Select NVL(‘String1’,’String2’) from dual 时就会返回 String1
Select NVL(‘’,’String2’) from dual 时就会返回 String2
Select substr(‘String’,1,1) from dual 从下标一开始 向后截取1 位 返回结果是 S
注意:下标是从1开始的;
Select substr(‘String’,2,4) from dual 返回的结果是 trin ;
--日期函数
add_months(d,n):将日期d加n个月后的日期,再拼上d的时间部分返回。
last_day(d):返回日期d所在月的最后一天的日期+d的时间部分。
trunc (d,fmt):将日期截取精确到fmt的部分,最多只能精确到小时,fmt可以为yyyy,mm,dd,hh[24],fmt缺省为精确到dd。
SELECT add_months(SYSDATE,1),add_months(SYSDATE,-1),add_months(to_date('2010-03-31','yyyy-mm-dd'),1),add_months(to_date('2010-03-31','yyyy-mm-dd'),-1) FROM dual;--在当前日期上加减1个月
SELECT last_day(SYSDATE) FROM dual;--当前月的最后一天加上参数的hh24:mi:ss
SELECT trunc(SYSDATE,'yyyy'),trunc(SYSDATE,'mm'),trunc(SYSDATE,'dd'),trunc(SYSDATE,'hh24'),trunc(SYSDATE) FROM dual;--截取函数,最多只能精确到时
--转换函数
·to_char(d,fmt):将日期按照fmt的格式转换成字符类型,fmt可以输入的格式及转换的结果说明:下一页ppt中有说明
·to_date(chr,fmt):将chr按照fmt的格式转换成日期型,fmt的格式要与chr相同。
·其它函数:
· Nvl(exp1,exp2):如果exp1为空,则返回exp2的值,否则返回exp1的值
·Decode(exp,search,result[,default]):如果exp=search,则返回result,否则返回default,如果default缺省,则返回null
SELECT to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss'),to_char(SYSDATE,'day'),to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss'),to_char(SYSDATE,'AM'),to_char(SYSDATE,'ddd'),to_char(SYSDATE,'dd'),to_char(SYSDATE-1,'d') FROM dual;
SELECT to_date('2009-11-13 15:44:33','yyyy-mm-dd hh24:mi:ss') FROM dual;
--其他函数
SELECT decode(123,1,'a',3,'b','c') FROM dual;
SELECT nvl('123','456') FROM dual; |
|