标签:
范例1:验证UPPER()大写、LOWER()小写函数
SELECT UPPER(‘LiXingHua‘),LOWER(‘MLDN‘) FROM dual ; |
范例2:现在查询出雇员姓名是“smith”的完整信息,但是由于失误,没有考虑到数据的大小写问题(在一些项目的运行之中经常会出现此类输入数据不考虑大小写的问题),此时可以使用UPPER()函数将全部内容变为大写
SELECT * FROM emp WHERE ename=UPPER(‘smith‘) ; |
范例3:查询所有雇员的姓名,要求将每个雇员的姓名以首字母大写INITCAP的形式出现
SELECT ename 原始姓名,INITCAP(ename) 姓名开头首字母大写 FROM emp ; |
范例4:现在要求查询所有雇员的姓名,但是要求将雇员姓名中所有的字母“A”替换成字母“_”
SELECT ename , REPLACE(ename,‘A‘,‘_‘) FROM emp ; |
范例5:查询出姓名长度是5的所有雇员信息
SELECT * FROM emp WHERE LENGTH(ename)=5 ; |
范例6:现在要求查询出雇员姓名前三个字母是“JAM”的雇员信息
SELECT * FROM emp WHERE SUBSTR(ename,0,3)=‘JAM‘ ; |
范例7:查询所有10部门雇员的姓名,但是不显示每个雇员姓名的前三个字母
SELECT ename 原姓名, SUBSTR(ename,3) 截取之后的姓名 FROM emp WHERE deptno=10 ; |
范例8:要求显示每个雇员姓名及其姓名的后三个字母
SELECT ename,SUBSTR(ename,LENGTH(ename)-2) FROM emp ; |
范例9:在SUBSTR()函数中设置负数截取
SELECT ename,SUBSTR(ename,-3) FROM emp ; |
范例10:下标从0开始
SELECT ename,SUBSTR(ename,0,3) FROM emp ; |
范例11:下标从1开始
SELECT ename,SUBSTR(ename,1,3) FROM emp ; |
范例12:返回指定字符的ASCII码
SELECT ASCII(‘L‘) FROM dual ; |
范例13:验证CHR()函数,将ASC II码变回字符
SELECT CHR(100) FROM dual ; |
范例14:去掉字符串左边空格 —— LTRIM()
SELECT ‘ MLDN LiXingHua ‘ 原始字符串 , LTRIM(‘ MLDN LiXingHua ‘) 去掉左空格 FROM dual ; |
范例15:去掉字符串右边空格 —— RTRIM()
SELECT ‘ MLDN LiXingHua ‘ 原始字符串 , RTRIM(‘ MLDN LiXingHua ‘) 去掉右空格 FROM dual ; |
范例16:去掉左右两边空格 —— TRIM()
SELECT ‘ MLDN LiXingHua ‘ 原始字符串 , TRIM(‘ MLDN LiXingHua ‘) 去掉左右空格 FROM dual ; |
范例17:字符串左、右填充 —— LPAD()、RPAD()
SELECT LPAD(‘MLDN‘ , 10 , ‘*‘) LPAD函数使用 , RPAD(‘MLDN‘ , 10 , ‘*‘) RPAD函数使用 , LPAD(RPAD(‘MLDN‘ , 10 , ‘*‘) , 16 , ‘*‘) 组合使用 FROM dual ; |
范例18:字符串查找 —— INSTR()
SELECT INSTR(‘MLDN Java‘ , ‘MLDN‘) 查找得到 , INSTR(‘MLDN Java‘ , ‘Java‘) 查找得到 , INSTR(‘MLDN Java‘ , ‘JAVA‘) 查找不到 FROM dual ; |
范例19:验证保留小数ROUND()函数的使用
SELECT ROUND(789.652) 不保留小数,ROUND(789.652,2) 保留两位小数, ROUND(789.652,-1) 处理整数进位 FROM dual ; |
范例20:列出每个雇员的一些基本信息和日工资情况
SELECT empno,ename,job,hiredate,sal,ROUND(sal/30,2) 日薪金 FROM emp ; |
范例21:验证截取小数TRUNC()函数
SELECT TRUNC(789.652) 截取小数, TRUNC(789.652,2) 截取两位小数, TRUNC(789.652,-2) 取整 FROM dual ; |
范例22:验证MOD函数
SELECT MOD(10,3) FROM DUAL ; |
范例23:取得当前的系统时间
SELECT SYSDATE FROM dual ; |
范例24:修改日期显示格式
ALTER SESSION SET NLS_DATE_FORMAT=‘yyyy-mm-dd hh24:mi:ss‘ ; SELECT SYSDATE FROM dual ; |
范例24:查询距离今天为止3天之后以及3天之前的日期
SELECT SYSDATE + 3 三天之后的日期 , SYSDATE - 3 三天之前的日期 FROM dual ; |
范例25:查询出每个雇员的到今天为止的雇佣天数、以及十天前每个雇员的雇佣天数。
SELECT empno 雇员编号 ,ename 雇员姓名 , SYSDATE-hiredate 雇佣天数 , (SYSDATE-10)-hiredate 十天前雇佣天数 FROM emp ; |
范例26:在查询结果之中使用TRUNC()函数TRUNC函数为指定元素而截去的日期值完成功能
SELECT empno 雇员编号 ,ename 雇员姓名 , TRUNC(SYSDATE-hiredate) 雇佣天数 , TRUNC((SYSDATE-10)-hiredate) 十天前雇佣天数 FROM emp ; |
范例27:验证ADD_MONTHS()函数
SELECT SYSDATE, ADD_MONTHS(SYSDATE, 3 ) 三个月之后的日期 , ADD_MONTHS(SYSDATE, -3 ) 三个月之前的日期 , ADD_MONTHS(SYSDATE, 60) 六十个月之后的日期 FROM dual ; |
范例28:要求显示所有雇员在被雇佣三个月之后的日期
SELECT empno,ename,job,sal,hiredate,ADD_MONTHS(hiredate,3) FROM emp ; |
范例29:验证NEXT_DAY()函数,NEXT_DAY()函数的功能主要是求出下一个指定的日期数,如果说现在的日期是“2012年01月30日 星期一”,那么如果现在要想知道下一个“星期一”或是“星期日”的具体日期,则可以使用NEXT_DAY()函数。
SELECT SYSDATE,NEXT_DAY(SYSDATE,‘星期日‘) 下一个星期日 , NEXT_DAY(SYSDATE,‘星期一‘) 下一个星期一 FROM dual ; |
3、LAST_DAY()函数
范例5-30:验证LAST_DAY()函数,使用LAST_DAY()函数可以求得指定日期所在月的最后一天日期,如果今天的日期是“2012年01月19日”,则使用LAST_DAY()求出来的日期就是“2012年01月31日”
SELECT SYSDATE, LAST_DAY(SYSDATE) FROM dual ; |
范例1:查询所有是在其雇佣所在月的倒数第三天被公司雇佣的完整雇员信息
SELECT empno,ename,job,hiredate,LAST_DAY(hiredate) FROM emp WHERE LAST_DAY(hiredate)-2=hiredate ; |
范例2:查询出每个雇员的编号、姓名、雇佣日期、雇佣的月数及年份
SELECT empno 雇员编号,ename 雇员姓名,hiredate 雇佣日期 , TRUNC(MONTHS_BETWEEN(sysdate,hiredate)) 雇佣总月数, TRUNC(MONTHS_BETWEEN(sysdate,hiredate)/12) 雇佣总年份 FROM emp ; |
范例33:查询出每个雇员的编号、姓名、雇佣日期、已雇佣的年数、月数、天数
SELECT empno 雇员编号,ename 雇员姓名, hiredate 雇佣日期 , TRUNC(MONTHS_BETWEEN(sysdate,hiredate)/12) 已雇佣年数 FROM emp ; |
SELECT empno 雇员编号,ename 雇员姓名, hiredate 雇佣日期 , TRUNC(MONTHS_BETWEEN(sysdate,hiredate)/12) 已雇佣年数 , TRUNC(MOD(MONTHS_BETWEEN(sysdate,hiredate),12)) 已雇佣月数 FROM emp ; |
SELECT empno 雇员编号,ename 雇员姓名, hiredate 雇佣日期 , TRUNC(MONTHS_BETWEEN(sysdate,hiredate)/12) 已雇佣年数 , TRUNC(MOD(MONTHS_BETWEEN(sysdate,hiredate),12)) 已雇佣月数 , TRUNC(sysdate-ADD_MONTHS(hiredate,MONTHS_BETWEEN(sysdate,hiredate))) 已雇佣天数 FROM emp ; |
范例4:从日期时间之中取出年、月、日数据。
SELECT EXTRACT(YEAR FROM DATE ‘2001-09-19‘) years , EXTRACT(MONTH FROM DATE ‘2001-09-19‘) months , EXTRACT(DAY FROM DATE ‘2001-09-19‘) days FROM dual ; |
范例5:从时间戳之中取出年、月、日、时、分、秒。
SELECT EXTRACT(YEAR FROM SYSTIMESTAMP) years , EXTRACT(MONTH FROM SYSTIMESTAMP) months , EXTRACT(DAY FROM SYSTIMESTAMP) days , EXTRACT(HOUR FROM SYSTIMESTAMP) hours , EXTRACT(MINUTE FROM SYSTIMESTAMP) minutes , EXTRACT(SECOND FROM SYSTIMESTAMP) seconds FROM dual ; |
范例6:取得时间间隔
SELECT EXTRACT(DAY FROM TO_TIMESTAMP(‘1982-08-13 12:17:57‘,‘yyyy-mm-dd hh24:mi:ss‘) - TO_TIMESTAMP(‘1981-09-27 09:08:33‘,‘yyyy-mm-dd hh24:mi:ss‘)) days , EXTRACT(HOUR FROM datetime_one - datetime_two) hours , EXTRACT(MINUTE FROM datetime_one - datetime_two) minutes , EXTRACT(SECOND FROM datetime_one - datetime_two) seconds FROM ( SELECT TO_TIMESTAMP(‘1982-08-13 12:17:57‘,‘yyyy-mm-dd hh24:mi:ss‘) datetime_one , TO_TIMESTAMP(‘1981-09-27 09:08:33‘,‘yyyy-mm-dd hh24:mi:ss‘) datetime_two FROM dual) ; |
范例7:复杂计算时间间隔(天数)
SELECT EXTRACT(DAY FROM TO_TIMESTAMP(‘1982-08-13 12:17:57‘,‘yyyy-mm-dd hh24:mi:ss‘) - TO_TIMESTAMP(‘1981-09-27 09:08:33‘,‘yyyy-mm-dd hh24:mi:ss‘)) days FROM dual ; |
范例4:格式化当前的日期时间
SELECT SYSDATE 当前系统时间 ,TO_CHAR(SYSDATE,‘YYYY-MM-DD‘) 格式化日期 , TO_CHAR(SYSDATE,‘YYYY-MM-DD HH24:MI:SS‘) 格式化日期时间 , TO_CHAR(SYSDATE,‘FMYYYY-MM-DD HH24:MI:SS‘) 去掉前导0的日期时间 FROM dual ; |
范例5:使用其他方法格式化年、月、日
SELECT SYSDATE 当前系统时间 ,TO_CHAR(SYSDATE,‘YEAR-MONTH-DY‘) 格式化日期 FROM dual ; |
范例6:查询出所有在每年2月份雇佣的雇员信息
SELECT * FROM emp WHERE TO_CHAR(hiredate,‘MM‘)=‘02‘ ; |
范例7:直接判断数字2
SELECT * FROM emp WHERE TO_CHAR(hiredate,‘MM‘)=2 ; |
范例8:现在要求将每个雇员的雇佣日期进行格式化显示,要求所有的雇佣日期可以按照“年-月-日”的形式显示,也可以将雇佣的年、月、日拆开分别显示
SELECT empno,ename,job,hiredate, TO_CHAR(hiredate,‘YYYY-MM-DD‘) 格式化雇佣日期, TO_CHAR(hiredate,‘YYYY‘) 年 , TO_CHAR(hiredate,‘MM‘) 月,TO_CHAR(hiredate,‘DD‘) 日 FROM emp ; |
范例9:使用英文的日期格式表示出每个雇员的雇佣日期
SELECT empno ,ename , hiredate ,TO_CHAR(hiredate,‘YEAR-MONTH-DY‘) FROM emp ; |
范例0:TO_CHAR格式化数字显示
SELECT TO_CHAR(987654321.789,‘999,999,999,999.99999‘) 格式化数字 , TO_CHAR(987654321.789,‘000,000,000,000.00000‘) 格式化数字 FROM dual ; |
范例1:TO_CHAR格式化货币显示
SELECT TO_CHAR(987654321.789,‘L999,999,999,999.99999‘) 显示货币 , TO_CHAR(987654321.789,‘$999,999,999,999.99999‘) 显示美圆 FROM dual ; |
范例2:使用TO_DATE()函数
SELECT TO_DATE(‘1979-09-19‘,‘YYYY-MM-DD‘) FROM dual ; |
范例3:使用TO_TIMESTAMP()函数
SELECT TO_TIMESTAMP(‘1981-09-27 18:07:10‘,‘YYYY-MM-DD HH24:MI:SS‘) datetime FROM dual ; |
范例:使用TO_NUMBER()函数将字符串变为数字
SELECT TO_NUMBER(‘09‘) + TO_NUMBER(‘19‘) 加法计算 , TO_NUMBER(‘09‘) * TO_NUMBER(‘19‘) 乘法计算 FROM dual ; |
范例:不利用TO_NUMBER()函数字符串也可以自动变为数字
SELECT ‘09‘ + ‘19‘ 加法计算 , ‘09‘ * ‘19‘ 乘法计算 FROM dual ; |
范例:要求查询出每个雇员的编号、姓名、职位、雇佣日期、年薪
SELECT empno,ename,job,hiredate,(sal+comm) * 12 年薪 FROM emp ; |
范例:验证NVL()函数
SELECT NVL(null,0),NVL(3,0) FROM dual ; |
范例:使用NVL()函数解决年薪为null的情况。
SELECT empno,ename,job,hiredate,(sal + NVL(comm,0)) * 12 年薪 FROM emp ; |
范例:查询每个雇员的编号、姓名、年薪(sal + comm)、基本工资、奖金
SELECT empno , ename , NVL2(comm , sal+comm,sal) , sal , comm FROM emp ; |
范例:验证NULLIF()函数
select ISNULL(null,null)结果是null
select ISNULL(null,33)结果是33
select
ISNULL(‘ddd‘,null)结果是ddd
select ISNULL(44,33)结果是44
SELECT NULLIF(1,1) , NULLIF(1,2) FROM dual ; |
范例:验证NULLIF()函数
SELECT empno , ename , job , LENGTH(ename) , LENGTH(job) , NULLIF(LENGTH(ename),LENGTH(job)) nullif FROM emp ; |
范例:测试DECODE()函数
SELECT DECODE(2,1,‘内容为一‘,2,‘内容为二‘) , DECODE(2,1,‘内容为一‘,‘没有条件满足‘) FROM dual ; |
范例:现在雇员表中的工作有以下几种:
· CLERK:业务员
· SALESMAN:销售人员
· MANAGER:经理
· ANALYST:分析员
· PRESIDENT:总裁
要求可以查询雇员的姓名、职位、基本工资等信息,但是要求将所有的职位信息都替换为中文显示。
SELECT ename, sal , DECODE(job, ‘CLERK‘,‘业务员‘, ‘SALESMAN‘,‘销售人员‘, ‘MANAGER‘,‘经理‘, ‘ANALYST‘,‘分析员‘, ‘PRESIDENT‘,‘总裁‘) job FROM emp ; |
范例:在DECODE()函数中只判断部分内容
SELECT ename, sal , DECODE(job, ‘CLERK‘,‘业务员‘, ‘SALESMAN‘,‘销售人员‘, ‘MANAGER‘,‘经理‘) job FROM emp ; |
范例:显示每个雇员的姓名、工资、职位,同时显示新的工资(新工资的标准为:办事员增长10%、销售人员增长20%、经理增长30%、其他职位的人增长50%)
SELECT ename, sal , CASE job WHEN ‘CLERK‘ THEN sal * 1.1 WHEN ‘SALESMAN‘ THEN sal * 1.2 WHEN ‘MANAGER‘ THEN sal * 1.3 ELSE sal * 1.5 END 新工资 FROM emp ; |
范例:验证COALESCE()函数的功能
SELECT ename, sal, comm, COALESCE(comm,100,2000) , COALESCE(comm,null,null) FROM emp ; |
标签:
原文地址:http://www.cnblogs.com/doudouxiaoye/p/5801155.html