oracle学习整理(二)函数

1.字符函数

{
   --1 LOWER(列名|表达式):全小写
   SELECT LOWER(ename),LOWER('ename')
   FROM      emp;

   --2 UPPER(列名|表达式) :全大写
   SELECT UPPER('abcdefg')
   FROM      dual;

   --3 INITCAP(列名|表达式) :首字母大写
   SELECT INITCAP('aaa bbb')
   FROM      dual;
  //运行结果是Aaa Bbb
   --4 CONCAT(列1|表达式1,列2|表达式2):字符串连接
   SELECT CONCAT('Good','String')

   FROM      dual;

   --GoodString

   
   --5 SUBSTR(列名|表达式,m[,n]):字符串截取
   SELECT SUBSTR('String',1,3),substr('abcdef',-2)
   FROM      dual;
   //第三个参数表示截取几位,第二个参数表示从第几位开始截,若第二个参数为负的,则表示从最后一位开始截
   结果:str   ef
 
   //截取字符串的后三位【两种表示方法】
   select ename,substr(ename,-3),substr(ename,length(ename)-2)
   from emp;

   --6 LENGTH(列名|表达式):返回字符串长度
   SELECT LENGTH('String')
   FROM      emp;

--7 INSTR(列名|表达式,’string’, [,m], [n]) :返回一个字符串在另一个字符串中的位置。返回的是一个关于位置的数字
 
//返回的结果是3  
   SELECT INSTR('String','r')
   FROM      dual;
// 找到第一个e就不继续找了
   instr('abcdeflee','e')
//从第六个位置开始找e,找到第一个为止
   instr('abcdeflee','e',6)
//从第六个位置开始找e,找到第二次出现e的位置,然后返回结果
   instr('abcdeflee','e',6,2)
//如果找不到则返回的结果为0

}


2.其他字符函数

{
  --1 LPAD(列名|表达式,n,‘string’) :左填充
  SELECT LPAD(sal,10,'*')
  FROM      emp;

--一共10位,缺少的从左面开始填充
  --2 RPAD(列名|表达式, n,‘string’) :右填充
  SELECT RPAD(sal,10,'*')
  FROM      emp;

  --3 TRIM([leading|trailing|both, ]trim_character FROM trim_source) :去掉左右两边指定字符。
  SELECT TRIM('S' FROM 'SSMITH')
  FROM      emp;
 结果:MITH


  --4 REPLACE (文本, 查找字符串, 替换字符串):替换字符串
  SELECT REPLACE('abc','b','d')
  FROM  dual;

}
3.字符函数综合练习
{
  查找公司员工编号,用户名(ename与hiredate连接成一个字符串),职位及ename的长度,
  要求职位从第6位起匹配'MAN',同时ename中至少包含一个'A'字母。

  SELECT empno,CONCAT(ename,hiredate),job,LENGTH(ename) length  
  FROM     emp
  WHERE  SUBSTR(job,6) = 'MAN'
  AND     INSTR(ename,'A')>0;
}



4.数字函数

{
  --1 ROUND(列名|表达式, n):四舍五入函数
  SELECT ROUND(65.654,2),ROUND(65.654,0),
  ROUND(65.654,-1)
  FROM  dual;
  --2 TRUNC(列名|表达式,n):截断函数
  SELECT TRUNC(65.654,2),TRUNC(65.654,0),
  TRUNC(65.654,-1)
  FROM  dual;
  --3 MOD(m,n):取余函数。
  SELECT ename,sal,MOD(sal,900)
  FROM emp
  WHERE deptno=30;
}

5.日期函数
{
  --1 SYSDATE返回系统日期
  SELECT SYSDATE
  FROM  dual;
 
  --2 MONTHS_BETWEEN:返回两个日期间隔的月数

      MONTHS_BETWEEN 函数演示——公司员工服务的月数。
  SELECT  ename, sal, MONTHS_BETWEEN(SYSDATE,hiredate) months
  FROM     emp
  ORDER BY months;

  SELECT  MONTHS_BETWEEN(SYSDATE,'1-10月-1997') months
  FROM     dual;

  SELECT  ename, sal, TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate),0) months
  FROM     emp
  ORDER BY months;
 
  --3 ADD_MONTHS在指定日期基础上加上相应的月数
  ADD_MONTHS 函数演示——1981年公司员工转正日期。
  SELECT  ename, sal, hiredate, ADD_MONTHS(hiredate,3) new_date
  FROM       emp
  WHERE   hiredate > '01-1月-1981';

  --4 NEXT_DAY返回某一日期的下一个指定日期 (指定日期必须为从星期一到星期日)
  SELECT  NEXT_DAY('08-9月-1999','星期四') NEXT_DAY
  FROM     dual;  

  --5 LAST_DAY返回指定日期当月最后一天的日期
  LAST_DAY 函数演示——11年9月8日所在月份最后一天。
  SELECT LAST_DAY('08-9月-2011') "LAST DAY"
  FROM    dual;
 
  --6 ROUND(date[,'fmt'])对日期进行指定格式的四舍五入操作。按照YEAR、MONTH、DAY等进行四舍五入。
  SELECT   ROUND(to_date('16-2月-1981'), 'MONTH')
  FROM    dual;
 
  SELECT  empno, hiredate, ROUND(hiredate,'MONTH')
  FROM      emp
  WHERE      SUBSTR(hiredate,-2,2)='81';
  -2 从右向左
  SELECT  SUBSTR('abcd',-2,2)
  FROM     dual;
   
  --7 TRUNC(date[,'fmt'])对日期进行指定格式的截断操作。按照YEAR、MONTH、DAY等进行截断。


  SELECT  empno, hiredate,TRUNC(hiredate,'MONTH')
  FROM      emp
  WHERE      SUBSTR(hiredate,-2,2)='81';

  --8 EXTRACT返回从日期类型中取出指定年、月、日
  --部门编号是20的部门中所有员工入职月份。

  SELECT  empno,hiredate,EXTRACT(MONTH FROM HIREDATE) 月份
  FROM      emp
  WHERE      deptno='20';

}


未完待续~~~~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值