oracle中的函数

引用文档:http://hi.baidu.com/faith_55/item/cbbaf31817ff166a3f87ce8c


一、字符函数:(接收字符的输入并返回字符或数字)
  1、lower()函数:(此函数将全部的大写字母都可以变为小写字母)
      SELECT lower('ABCDE') FROM dual ; dual是一张虚拟表
   2、upper()函数:(将输入的字符串变为大写字母)
      SELECT upper('abcd') FROM dual ;
      例如:之前查询的时候区分大小写,所以此处如果输入的是小写字母,就可以通过upper函数进行转换。
      查询雇员姓名内容为smith的全部员工。
      SELECT * FROM emp WHERE ename=UPPER('smith')    3、initcap()函数:(将每个字符串的首字母大写)
      例如:要求将雇员表中的全部雇员信息的首字母大写。
      SELECT initcap(lower(ename)) FROM emp ;
      函数可以进行嵌套。     4、concat()函数:(字符串连接,可以连接两个字符串)
       SELECT concat('hello',' world!!!') FROM dual ;
       实际上使用“||”也可以完成两个字符串的连接操作。    5、substr()函数:(字符串截取)
       截取的时候需要注意:要从那里开始截取,之后取多长的长度。
       SELECT substr('hello',1,2) FROM dual ;       同时也可以取负数 ,表示从尾倒着取。
       SELECT substr('hello',-3,2)FROM dual 倒数第三个开始取两位        注意:substr函数的开始点是从1或0开始的,oracle非常智能。    6、length():取出字符串的长度,例如,取出每一个雇员的姓名的长度:
       SELECT ename||' 姓名的长度为:'||length(ename) FROM emp ;    7、instr()函数:查找在一个字符串中是否有指定的字符串,如果有,则返回其位置
       SELECT instr('hello','x') FROM dual ;
       如果有此字符串,则返回位置,如果没有,则返回0。    8、replace()函数:替换,可以将一个字符串中的指定字符串替换为其他内容:
       SELECT replace('hello','l','x') FROM dual ;    9、trim()函数:去掉左右空格的函数
       SELECT trim('        hello          ') FROM dual ;查询:
1、 检索姓名最后一个字母为N的雇员
        • SELECT * FROM emp WHERE substr(ename,-1,1)='N';
2、 检索职务为“SALE”的全部员工信息
      • SELECT * FROM emp WHERE substr(job,1,4)='SALE';二、数值函数:(接收数值并返回数值)   1、ROUND()函数:(表示四舍五入)      •SELECT ROUND(34.56) FROM dual ;     结果:35
      •SELECT ROUND(34.56,-1) FROM dual ;  结果:30      •SELECT ROUND(35.56,-1) FROM dual ;  结果:40      •SELECT ROUND(34.56,1) FROM dual ;   结果:35.6
   2、TRUNC()函数:(表示截取函数,不会保留任何小数且不会执行四舍五入的操作)
     • SELECT TRUNC(34.56) FROM dual ;     结果:34     • SELECT TRUNC(34.56,1) FROM dual ;   结果:34.5
     • SELECT TRUNC(34.56,-1) FROM dual ;  结果:30   3、MOD()函数:(取余数,即取模)
      •SELECT MOD(10,3) FROM dual ;        结果:1三、日期函数:  1、在Oracle中可以通过查询sysdate取得当前的日期:
      • SELECT sysdate FROM dual ;       日期-数字=日期;日期+数字=日期;日期-日期=数字(多少天)   2、例如:计算10部门中的员工进入公司的周数:
      肯定使用当前日期-雇佣日期(hiredate) = 天数,天数/7为日期数。
      SELECT ename,round((sysdate-hiredate)/7) from emp ;
   3、months_between()函数:给出指定日期范围的月数      求出所有员工的受雇月数:months_between,使用当前日期与雇佣日期比较。      SELECT ename,round(MONTHS_BETWEEN(sysdate,hiredate)) from emp ;   4、add_months()函数:在指定的日期上加上指定的月数,求出之后的日期      求出,三个月之后的日期是那一天:
      SELECT ADD_MONTHS(sysdate,3) FROM dual ;   5、NEXT_DAY():表示下一个今天(星期几)
      SELECT NEXT_DAY(sysdate,'星期一') FROM dual ;   表示下一个星期一是多少号    6、LAST_DAY:求出当前日期所在月的最后一天:
      SELECT LAST_DAY(sysdate) FROM dual ;            表示本月的最后一天的日期四、转化函数(重点)    1、to_char()函数:转换成字符串       拆分年月日,例如:       .select empo,empname,to_char(hiredate,'yyyy') year,to_char(hiredate,'mm')months,to_char    (hiredate,'dd') day from emp;       .select empo,to_char(hiredate,'fmyyyy-mm-dd') from emp ( fm代表可以去除0)       .select empl,to_char(sal ,'$99,999') from emp;     (9表示1位数字,如果是本地货币则用L表示)    2、to_number()函数:转换成数字       select to_number('123')+to_number('321,) from dual (字符串转为数字进行相加)    3、to_date()函数:转换成日期       select to_date('2011-01-01','yyyy-mm-dd') from dual;五、通用函数:(重点)   1、NVL()函数:将一个指空值变为一个指定的内容     select empo,ename,NVL(comm,0),(sal+NVL(comm,0))*12 income from emp;     如果奖金为空则按零显示 再进行计算。   2、decode函数:类似于IF ELSE IF ELSE 语句      select decode(1,1,'内容为1',2,'内容为2',3,'内容为3') from dual;      如果给出的值为1,那么则显示内容为1 ,为2则显示内容为2……       再例如 如果工作为销售则显示销售员、若为业务员则显示业务员、若为总裁则显示总裁    select decode(job,'salseman','销售员','clerk','业务员','president','总裁') from emp!

你可能感兴趣的:(oracle)