首页 > 代码库 > ORACLE循序渐进讲解(第三讲)
ORACLE循序渐进讲解(第三讲)
一、oracle常用系统函数
1、日期类函数
(1)to_date(字符串,格式)
SQL> select to_date('2014-10-11 12:13:14','yyyy-mm-dd hh:mi:ss') from dual; TO_DATE('2014-10-1112:13:14',' ------------------------------ 2014-10-11 12:13:14
(2)获取当前月份的第一天。
SQL> select trunc(sysdate,'month') from dual; TRUNC(SYSDATE,'MONTH') ---------------------- 2014-11-01
(3)获取当前月份的最后一天
SQL> select trunc(last_day(sysdate)) from dual; TRUNC(LAST_DAY(SYSDATE)) ------------------------ 2014-11-30
(4)获取当前年份的第一天
SQL> select trunc(sysdate,'year') from dual; TRUNC(SYSDATE,'YEAR') --------------------- 2014-01-01
(5)获取当前年份的最后一天
SQL> select add_months(trunc(sysdate,'year'),12)-1 from dual; ADD_MONTHS(TRUNC(SYSDATE,'YEAR ------------------------------ 2014-12-31
(6)取当前月份的天数
SQL> select cast(to_char(last_day(sysdate),'dd') as int) from dual; CAST(TO_CHAR(LAST_DAY(SYSDATE) --------------------------------------- 30
(7)取当前月份剩下的天数
SQL> select last_day(sysdate)-sysdate from dual; LAST_DAY(SYSDATE)-SYSDATE ------------------------- 8
(8)取当前日期的下一个星期日的日期(返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日)
SQL> select next_day(sysdate,1) from dual; NEXT_DAY(SYSDATE,1) ------------------- 2014-11-23 17:39:48
<pre name="code" class="sql" style="font-size: 14px;">SQL> <span style="font-family: Arial, Helvetica, sans-serif;">select months_between(to_date('2014-11-01','yyyy-mm-dd'),to_date('2014-01-01','yyyy-mm-dd')) from dual;</span>MONTHS_BETWEEN(TO_DATE(‘2014-1------------------------------ 102、字符串类函数
(1)to_char(字符串,格式)
SQL> select to_char(sysdate,'yyyy-mm') from dual; TO_CHAR(SYSDATE,'YYYY-MM') -------------------------- 2014-11
(2)upper和lower 大小写转化、length长度、连接符||
SQL> select upper('a') || lower('B') || length('aaa') from dual; UPPER('A')||LOWER('B')||LENGTH ------------------------------ Ab3
SQL> select lpad('aaa',5,'*'),rpad('aaa',5,'*') from dual; LPAD('AAA',5,'*') RPAD('AAA',5,'*') ----------------- ----------------- **aaa aaa**
(4)LTRIM,RTRIM和TRIM,他们的作用是从字符串的左边,右边,左右两边删除不需要的字符,默认时删除空格
SQL> select ltrim('abbb','a'),rtrim('1234','4'),trim(' ABC ') from dual; LTRIM('ABBB','A') RTRIM('1234','4') TRIM('ABC') ----------------- ----------------- ----------- bbb 123 ABC
(5)SUBSTR(string,start [,count]) 该函数告诉oracle提取出string一个子集,start开始位置,count提取长度,不指定count时,默认提取到该字符串的尾部。
SQL> select substr('abcde',1,2) from dual; SUBSTR('ABCDE',1,2) ------------------- ab
(6)INSTR 返回指定的字符串所在的位置
INSTR(string,set[,start [,occurrence ] ] ) 如果指定start,oracle则跳过前面所有字符串到该位置开始搜索,occurence,是强迫instr跳过前几次与字符串匹配,给出下一次匹配的位置,如果occurence指定3,那就是匹配第三次的位置了。
SQL> select instr('abcad','a',1),instr('abcad','a',2,1) from dual; INSTR('ABCAD','A',1) INSTR('ABCAD','A',2,1) -------------------- ---------------------- 1 4
3、数学类函数
(1)round(n,[m]) 用于执行四舍五入,如果省去m则四舍五入到整数,如果m为正数则四舍五入到小数点m位后,如果m为负数则四舍五入到小数点m位前。
SQL> select round(12.12),round(12.12,1),round(12.12,-1) from dual; ROUND(12.12) ROUND(12.12,1) ROUND(12.12,-1) ------------ -------------- --------------- 12 12.1 10
(2)trunc(n,[m]) 用于截取数字,如果省掉m就截取小数部分,如果m为正数则截取到小数点m位后,如果m为负数则截取到小数点前m位。
SQL> select trunc(12.12),trunc(12.12,1),trunc(12.12,-1) from dual; TRUNC(12.12) TRUNC(12.12,1) TRUNC(12.12,-1) ------------ -------------- --------------- 12 12.1 10
(3)MOD(x,y) 返回x除以y的余数、CEIL(x)返回大于或等于x的最小整数、FLOOR(x)返回小于或等于x的最大整数。
SQL> select mod(1,3),ceil(12.56),floor(12.56) from dual; MOD(1,3) CEIL(12.56) FLOOR(12.56) ---------- ----------- ------------ 1 13 124、系统函数sys_context
(1)terminal 当前会话客户所对应的终端标识符。
(2)lanuage:语言。
(3)db_name:当前数据库名称。
(4)nls_date_format:当前会话客户对应的日期格式。
(5)session_user:当前会话客户所对应的数据库用户名。
(6)current_schema:当前会话客户所对应的默认方案名。
(7)host:返回数据库所在的主机名称。
SQL> select sys_context('userenv','db_name') dbName,sys_context('userenv','nls_date_format') date_fromat from dual;DBNAME DATE_FROMAT-------------------------------------------------------------------------------- --------------------------------------------------------------------------------orcl DD-MON-RR
ORACLE循序渐进讲解(第三讲)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。