Oracle函数练习题
Oracle函数练习题
题目及参考答案:
-- 单行函数:只有一个参数输入,只有一个结果输出
-- 多行函数或分组函数:可有多个参数输入,只有一个结果输出 -- 测试lower/upper/initcap函数,使用dual哑表
select lower('abc Def GHI') from dual; --abc def ghi
select upper('abc Def GHI') from dual; --ABC DEF GHI
select initcap('abc Def GHI') from dual; --Abc Def Ghi-- 测试concat/substr函数,从1开始,表示字符,不论中英文
select concat('abc','一二三') from dual; --abc一二三
select 'abc' || '一二三' || '哈吼' from dual; --abc一二三哈吼
select concat('abc',concat('一二三','哈吼')) from dual; --abc一二三哈吼
select substr('abc一二三',3,3) from dual; --c一二-- 测试length函数,一个英文一个字节
select length('abc一二三') from dual; --6-- 测试instr/lpad/rpad函数,从左向右找第一次出现的位置,从1开始
select instr('abcdefg','e') from dual; --5
select LPAD('abc',6,'*') from dual; --***abc
select RPAD('abc',6,'*') from dual; --abc***-- 测试trim/replace函数
select trim(' ' from ' abc a ') from dual; --abc a
select replace('aaBBccAADDee','c','A') from dual; --aaBBAAAADDee-- 测试round/trunc/mod函数作用于数值型
select round(1.12345,3) from dual; --1.123
select trunc(1.12345,3) from dual; --1.123
select mod(10,3) from dual; --1-- 当前日期:sysdate
select to_char(sysdate, 'yyyy-mm-dd') from dual; --2019-03-12-- 测试round作用于日期型(month)
select round(sysdate, 'month') from dual; --2019/3/1-- 测试round作用于日期型(year)
select round(sysdate, 'year') from dual; --2019/1/1-- 测试trunc作用于日期型(month)
select trunc(sysdate, 'month') from dual; --2019/3/1-- 测试trunc作用于日期型(year)
select trunc(sysdate, 'year') from dual; --2019/1/1-- 显示昨天,今天,明天的日期,日期类型 +- 数值 = 日期类型
select sysdate-1 "昨天", sysdate "今天", sysdate+1 "明天" from dual; --2019/3/11 10:55:53 | 2019/3/12 10:55:53 | 2019/3/13 10:55:53-- 以年和月形式显示员工近似工龄,日期-日期=数值,假设:一年以365天计算,一月以30天计算
select ename "姓名", round(sysdate-hiredate,0)/365 "天数" from emp; --SMITH | 38.2575342465753 ......-- 使用months_between函数,精确计算到年底还有多少个月
select months_between('31-12月-19', sysdate) from dual; --9.59805630227001-- 使用months_between函数,以精确月形式显示员工工龄
select ename "姓名", months_between(sysdate, hiredate) "员工工龄" from emp; --SMITH | 458.853571535245 ......-- 测试add_months函数,下个月今天是多少号
select add_months(sysdate,1) from dual; --2019/4/12 11:04:33-- 测试add_months函数,上个月今天是多少号
select add_months(sysdate,-1) from dual; --2019/2/12 11:05:32-- 测试next_day函数,从今天开始算,下一个星期三是多少号
select next_day(sysdate, '星期三') from dual; --2019/3/13 11:06:25-- 测试next_day函数,从今天开始算,下下一个星期三是多少号
select next_day(next_day(sysdate, '星期三'), '星期三') from dual; --2019/3/20 11:08:35-- 测试next_day函数,从今天开始算,下一个星期三的下一个星期日是多少号
select next_day(next_day(sysdate, '星期三'), '星期日') from dual; --2019/3/17 11:09:12-- 测试last_day函数,本月最后一天是多少号
select last_day(sysdate) from dual; --2019/3/31 11:11:09-- 测试last_day函数,本月倒数第二天是多少号
select last_day(sysdate)-1 from dual; --2019/3/30 11:11:21-- 测试last_day函数,下一个月最后一天是多少号
select last_day(add_months(sysdate,1)) from dual; --2019/4/30 11:11:31-- 测试last_day函数,上一个月最后一天是多少号
select last_day(add_months(sysdate,-1)) from dual; --2019/2/28 11:12:01-- 注意:
-- 1)日期-日期=天数
-- 2)日期+-天数=日期---------三大类型转换-- oracle中三大类型与隐式数据类型转换
-- (1)varchar2变长/char定长-->number,例如:'123'->123
-- (2)varchar2/char-->date,例如:'25-4月-15'->'25-4月-15'
-- (3)number---->varchar2/char,例如:123->'123'
-- (4)date------>varchar2/char,例如:'25-4月-15'->'25-4月-15'-- oracle如何隐式转换:
-- 1)=号二边的类型是否相同
-- 2)如果=号二边的类型不同,尝试的去做转换
-- 3)在转换时,要确保合法合理,否则转换会失败,例如:12月不会有32天,一年中不会有13月-- 查询1980年12月17日入职的员工(方式一:日期隐示式转换)
select * from emp where hiredate = '17-12月-80'; --7369 | SMITH | CLERK | 7902 | 1980/12/17 | 800.00 | | 20-- 使用to_char(日期,'格"常量"式')函数将日期转成字符串,显示如下格式:2015 年 04 月 25 日 星期六
select to_char(sysdate,'yyyy" 年 "mm"月 "dd"日 "day') from dual; --2019 年 03月 12日 星期二-- 使用to_char(日期,'格式')函数将日期转成字符串,显示如格式:2015-04-25今天是星期六 15:15:15
select to_char(sysdate,'yyyy-mm-dd"今天是"day hh24:mi:ss') from dual; --2019-03-12今天是星期二 11:13:50-- 使用to_char(数值,'格式')函数将数值转成字符串,显示如下格式:$1,234
select to_char(1234,'$9,999') from dual; -- $1,234-- 使用to_char(数值,'格式')函数将数值转成字符串,显示如下格式:¥1,234select to_char(1234,'$9,999') from dual;
select to_char(1234,'L9,999') from dual; --¥1,234
Oracle函数练习题相关推荐
- oracle游标的说法,oracle游标练习题.doc
oracle游标练习题 oracle游标练习题 当查询返回结果超过一行时,就需要一个显式游标,此时用户不能使用select into语句.PL/SQL管理隐式游标,当查询开始时隐式游标打开,查询结束时 ...
- Oracle数据库练习题(2)
一.表展示 二.练习题及答案 11.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称 (1)select t.empno, t.empname, d.dnamefrom (select a. ...
- Oracle数据库练习题(1)
一.建表 create table empgj(empno number(4,0) primary key,ename varchar2(10), job varchar2(9),mgr number ...
- mybatis可以用oracle,使用MyBatis调用oracle函数(基于注释)
我需要使用注解在MyBatis中调用Oracle函数.使用MyBatis调用oracle函数(基于注释) 我的映射: @Select("{ CALL #{outParam, jdbcType ...
- oracle增量 mysql_是否有任何mysql / Oracle函数给予增量号。基于另一列相似值的一列?...
我有兴趣知道是否有任何MySQL / Oracle函数给增量号.在另一列相似的值的基础上的一列? 就像在我的下面的代码中,我有order_primary列,其中包含订单号.所以基于此我们可以确定有多少 ...
- 使用oracle 游标修改数据,Oracle 函数施行修改和游标传递
Oracle 函数执行修改和游标传递 ORA-14551:不能在查询语句中执行dml语句,开始误以为函数里不能执行DML或DDL语句,后查到前辈通过采用自治事务解决,在此基础上演例 传递SQL语句对数 ...
- oracle 函数索引
http://bbs.51cto.com/thread-26271-1.html 如何创建oracle函数索引 Oracle8i的很重要的一个新特性就是增加了function-based index这 ...
- oracle+查询主机地址,oracle函数:获取Internet主机名和ip地址
您可能感兴趣的话题: Oracle 核心提示:oracle函数获取Internet主机名和ip地址 Oracle包utl_inaddr 作用:用于取得局域网或Internet环境中的主机名和IP地址. ...
- row number函数 oracle,oracle函数 ROW_NUMBER()
[语法]ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) [功能]表示根据COL1分组,在分组内部根据 COL2排序,而这个值就表示每组内部排序后 ...
最新文章
- python property装饰器原理,Python @property装饰器不起作用
- Android 分享机顶盒项目的封装类《GridView》
- SpringBoot开发案例之整合Dubbo分布式服务
- android汽车之家顶部滑动菜单,Android自定义控件之仿汽车之家下拉刷新
- ATO/MTO类机械制造业特点以及ERP需求分析(三)
- 查询数据库,处理NULL值问题
- Android StateFlow详解
- 各种排序笔记---基于比较排序部分
- SQL Server 2005将某些数据库行为设置为与指定的 SQL Server 版本兼容
- 企业级数据库备份方案完全攻略
- 基于嵌入式系统的gnash最小库依赖关系
- 搜索引擎登录工具_做seo必须懂的十条搜索引擎语法
- libiconv移植
- 项目管理 : 需求管理的6个流程
- python内置函数源码中啥都没有_如何查看python内置函数源码
- JAVA中黄金分割点的问题
- WINVNC Server详解
- 信息安全管理——数据编码与密码基础
- 编译小米2s CyanogenMod 版本遇到的几个问题
- 对爱词霸(iciba)生词本功能的一些建议