oracle函数应用
----Oracle中的函数 oracle中函数的分类: --第一种:日期函数 --第二种: 字符函数 --第三种: 数学函数 --第四种: 转换函数 --第五种: 分析函数 ----------------------------------------------------------------------------------- ********* dual: 虚表, 该表并不存在.它存在的目的是为了保证语句的语法正确 ---在使用函数时,如果不确定数据来自至于哪一张表,就可以查询虚表,保证语法正确 ************************************ 常用日期函数: sysdate --获得系统时间 add_months(); --在当前时间上加上几个月,形成一个新的时间 months_between(); --计算两个时间之间,间隔了几个月 last_day() --得到这个月的最后一天的日期 next_day(); ---得到下一个星期几是哪一个日期 extract() --得到日期中指定部份的值 ************************************ sysdate --获得当前系统时间的函数 select sysdate from dual; ************************************ add_months() --在指定日期上加上指定月份形成一个新的日期 select add_months(sysdate,-10) from dual; --减去10个月 select add_months(date'2011-4-2',3) 日期 from dual; select '2015-4-1' 入学日期,add_months(date'2015-4-1',6) 就业时间 from dual; select name,bir 原有时间,add_months(bir,5) 新日期 from info2; *************************************** months_between() --计算两个日期之间,相差的月份 floor(浮点数);--得到一个小于当前浮点数的最大的整数 floor(12.34). select months_between(date'2015-10-20',date'2015-5-20') from dual; select months_between(sysdate,date'2015-1-1') 相差的月份 from dual; select floor(months_between(sysdate,date'1979-9-12')/12) 年龄 from dual; select name,bir,floor(months_between(sysdate,bir)/12)||'岁' 年龄 from info2; select name,bir,floor(months_between(sysdate,bir)/12)||'岁' 年龄 from info2 order by 年龄 asc; select name,bir,floor(months_between(sysdate,bir)/12)||'岁' 年龄 from info2 order by bir desc; ******************************************** last_day() --获得指定日期中的这一个月的最后一天的日期 select last_day(sysdate) from dual; select last_day(date'2011-12-1') from dual; ********************************************** next_day() --获得下一个星期几,是哪一个日期 `1 星期天 2 星期一.......7 星期六 select next_day(sysdate,2) from dual; select next_day(date'2015-1-2',6) from dual; ********************************************* extract() ---获得一个日期,指定部份的值 select extract(year from sysdate)||'年' 年份 from dual;--查询日期中的年份 select extract(month from sysdate) 月份 from dual;--查询日期中的月份 select extract(day from sysdate) 日期 from dual;--查询日期中的日期 select extract(month from date'2011-12-1') 月份 from dual;--查询日期中的月份 ******************************************************************************************************** sysdate add_months month_between last_day next_day extract ------------------------------------------------------------------------------------------------------------------------- 字符函数 length()--计算长度 upper() ---将字母变为大写 lower() ---将字母变为小写 ltrim() ----去掉字符左侧的空格 rtrim() ----去掉字符右侧的空格 trim()-----去掉两端的空格 lpad() ----从左向右填充字符 rpad() ----从右向左填充字符 substr() ---截取字符串 replace() --替换 ************************* --length() select length('abcd') from dual; select name,length(name) from info2; ************************* --ltrim() --rtrim() --trim() select ' abc' from dual; select ltrim( ' abc') from dual; ************************ --upper() --lower(); select upper('abA汉字12') from dual; select lower('abA汉字12') from dual; *********************** --lpad() 从左向右填充字符 --rpad() 从右向左填充字符 select lpad('hello Christina',10,'*') from dual; --字符串,只显示10个字符,如果不够10个从左向右填充* select rpad('abc',10,'*') from dual; ********************** --substr(字符串,第几个字符,取几个长度) --截取字符串 select substr('你好张三丰,我是李四',3,3) from dual; *********************** replace(字符串,指定字符,新内容) --把字符串中的指定字符,用新的内容替换 select replace('大家好我是张三','张三','李四') from dual;