电脑技术学习

Oracle函数集锦

dn001

 (三).字符型函数返回数字值(Character Functions Returning Number Values)

  本类函数支持所有的数据类型

  1、INSTR(c1,c2[,n1[,n2]]) 返回c2在c1中位置

   c1:原字符串

   c2:要寻找的字符串

   n1:查询起始位置,正值表示从左到右,负值表示从右到左 (大小表示位置,比如3表示左面第3处开始,-3表示右面第3处开始)。黑黑,如果为0的话,则返回的也是0

   n2:第几个匹配项。大于0

  例如:SELECT INSTR('abcdefg','e',-3) FROM DUAL;

  2、LENGTH(c) 返回指定字符串的长度。如果

  例如:SELECT LENGTH('A123中') FROM DUAL;

  猜猜SELECT LENGTH('') FROM DUAL;的返回值是什么

  (四).日期函数(Datetime Functions)

  本类函数中,除months_between返回数值外,其它都将返回日期。

  1、ADD_MONTHS() 返回指定日期月份+n之后的值,n可以为任何整数。

  例如:SELECT ADD_MONTHS(sysdate,12),ADD_MONTHS(sysdate,-12) FROM DUAL;

  2、CURRENT_DATE 返回当前session所在时区的默认时间

  例如:

  SQL> alter session set nls_date_format = 'mm-dd-yyyy' ;

  SQL> select current_date from dual;

  3、SYSDATE 功能与上相同,返回当前session所在时区的默认时间。但是需要注意的一点是,如果同时使用sysdate与current_date获得的时间不一定相同,某些情况下current_date会比sysdate快一秒。经过与xyf_tck(兄台的大作ORACLE的工作机制写的很好,深入浅出)的短暂交流,我们认为current_date是将current_timestamp中毫秒四舍五入后的返回,虽然没有找到文档支持,但是想来应该八九不离十。同时,仅是某些情况下会有一秒的误差,一般情况下并不会对你的操作造成影响,所以了解即可。

  例如:SELECT SYSDATE,CURRENT_DATE FROM DUAL;

  4、LAST_DAY(d) 返回指定时间所在月的最后一天

  例如:SELECT last_day(SYSDATE) FROM DUAL;

  5、NEXT_DAY(d,n) 返回指定日期后第一个n的日期,n为一周中的某一天。但是,需要注意的是n如果为字符的话,它的星期形式需要与当前session默认时区中的星期形式相同。

  例如:三思用的中文nt,nls_language值为SIMPLIFIED CHINESE

  SELECT NEXT_DAY(SYSDATE,5) FROM DUAL;

  SELECT NEXT_DAY(SYSDATE,'星期四') FROM DUAL;

  两种方式都可以取到正确的返回,但是:

  SELECT NEXT_DAY(SYSDATE,'Thursday') FROM DUAL;

  则会执行出错,提供你说周中的日无效,就是这个原因了。

标签: 函数