首先说一下:函数的目的:简化我们的操作,如果没有这些函数,我们势必要推理半天。 关于那么多函数最好的是阅读官方文档,但是我们英文水平及设计的内容局限性。只需了解一些常用的函数即可。
Oracle函数特别多,函数可以没有参数,但是必须要有返回值。
以下是我关于单行函数的学习积累的知识:
1.单行函数: 对单行进行操作,每行返回一个结果,函数可以嵌套。单行函数较为重要的六大类:字符,数值,通用,转换,日期,表达式
2. 字符函数:包括大小写转换与字符处理。
2-1:大小写转换包括:UPPER LOWER以及INITCAP (upper用来转为全大写,lower用来转换全小写,initcap用来转换驼峰式书写,即首字母大写)
例:SELECT upper(‘nihao‘) 大写,lower(‘Email‘) 小写,initcap(‘job_ss‘) 驼峰 FROM DUAL
运行结果:
2-2:字符处理包括: concat,substr,length,instr,lpad,rpad,replace,trim.下面一一介绍;
2-2-1:concat(连接两个值,相当于||)
例:SELECT "CONCAT"(‘你‘, ‘好‘) 打招呼 FROM dual;
运行结果 :
2-2-2: substr(column|expression,n1,[n2])(返回第一个参数中,从第n1位开始,长度为n2的字符串。如果没有n2则返回从n1开始到最后,n1为负,则取反向值然后再执行右移几位)
例:SELECT SUBSTR(‘dajiahao‘,3,5) FROM dual 结果:
SELECT "SUBSTR"(‘abcde‘,-1 ,3 )FROM dual 结果:
select substr(‘abcde‘,-6,6) from dual 结果:
由此总结可知:当第n1负值超过字符长度,则结果永远为空。
2-2-3: length:即字符的长度
例:SELECT "LENGTH"(‘qshzhenshihaorena‘)FROM dual 结果:
2-2-4 : instr(s1,s2,[n1],[n2])(返回s1中,子串s2从n1开始,第n2次出现的位置。n1n2默认为1)
例: SELECT "INSTR"(‘hahatianxiataiping‘, ‘a‘,4,2)FROM dual 结果: 可知所得结果是4之后的第几位,而不是总的位置
2-2-5 : lpad与rpad(s1,num,s2):用S2左右填充S1到num位
例 SELECT LPAD(‘ss‘, 10,‘a‘),"RPAD"(‘ss‘, 10, ‘a‘) FROM dual 结果 如果超过10个字节的数会截取!
2-2-6: replace(s1,s2,s3);把s1中的s2换成s3
例 SELECT "REPLACE"(‘qishihaos‘, ‘s‘, ‘w‘) FROM dual 结果
2-2-7:trim()去除字符串头部或者尾部的字符
例SELECT "TRIM"(‘s‘ from ‘ssyyss‘) FROM dual 结果 去除的字符只能是一个单字节字符,汉语字符也行,而且去除的直到边上没有
3 数值函数 :Round TRUNC MOD
round(column|expression,n)四舍五入到小数点后第几位 Trunc截取到小数点后几位 MoD取余
例 SELECT "ROUND"(2.23456, 2),"TRUNC"(2.2385, 4), "MOD"(40.4, 7) FROM dual 结果
4 日期函数 :oracle 默认日期形式是:DD-MON-RR 。日期加减数字,功能是在该日期上加减对应天数 sysdate:返回系统当前日期。
区别 RR与yy区别:
常用日期函数:4.1-sysdate:返回系统的日期:
例: SELECT SYSDATE FROM dual 结果:
4.2 months_between 两日期相隔月数
例 SELECT "MONTHS_BETWEEN"(sysdate, ‘1-jan-2000‘) FROM dual 结果: ----------------------- 结果这能为小数;
4-3 add_months (日期,num) 返回指定日期,加上数字月后的日期
例 SELECT "ADD_MONTHS"(sysdate, 3) FROM dual 结果;
4-4 next_day ;返回某一日期的下一个指定日期
例 SELECT "NEXT_DAY"(SYSDATE, ‘MON‘) n FROM dual 结果:
4-5 last_day; 返回某一日期的的当月最后一天
例 SELECT "LAST_DAY"(SYSDATE) FROM dual 结果
4-6 round : 日期的四舍五入,此处注意,如按天四舍五入,周日是第一天,周三周四是分界点。
SELECT ROUND (SYSDATE,‘mon‘) FROM dual 结果
4-7 trunc :日期的截取。
SELECT trunc (SYSDATE,‘day‘) FROM dual 结果:
4-8 extract:返回日期中的年月日
SELECT EXTRACT(month FROM sysdate) FROM dual 结果;
5.转换函数:
5.1:隐式转换
:
5.2:显示转换:
to_char(date,字符格式) 2017-03-01 pm 11:34:47 这一天是: wed
to_char(num,字符格式) SELECT "TO_CHAR"(1223.45677,‘9,999.99999‘)||‘rmb‘ FROM dual
to_num (字符,数字格式) SELECT "TO_NUMBER"(‘123456‘ ) FROM dual
数字格式:
to_date (字符,日期格式) SELECT "TO_DATE"(‘2015-03-18‘, ‘YY-MM-DD‘)FROM dual
6:通用函数:与空值相关的一些函数:NVL NVL2 NULLIF COALESCE
nvl(n1,n2) n1不是null就返回n1,否则返回n2 SELECT "NVL"(null, 23) FROM dual
nvl2(n1,n2,n3) n1不是null就返回n2,否则返回n3 SELECT "NVL2"(NULL, 23, 25) FROM DUAL
nullif(n1,n2) 如果两个表达式相等返回null,否则返回n1 SELECT "NULLIF"(‘tian‘, ‘hha‘) FROM dual
"COALESCE"(expr1, ... exprn)返回第一个不为空的参数
7 表达式 case与decode
case语法:
decode:
8 嵌套就不用举例了吧,多练才是王道啊。。
2017-03-02 00:02:44
:
原文:http://www.cnblogs.com/wajz/p/6484832.html