Oracle 10g数据库基础之基本查询语句-中-函数
Oracle 10g数据库基础之基本查询语句-中-函数
使用函数的目的是为了操作数据
将输入的变量处理,返回一个结果。
变量可以有好多。
传入的变量可以是列的值,也可以是表达式。
函数可以嵌套。
内层函数的结果是外层函数的变量。
单行函数:每一行都有一个返回值,但可以有多个变量。
多行函数:多行有一个返回值。
字符操作函数
数字操作函数
日期操作函数
数据类型转换函数
综合数据类型函数
Lower,upper,initcap 小写大写首字母大写
大小写操作函数
字符串操作函数
该实验的目的是掌握常用的字符串操作的函数.
字符串的大小写操作
SQL> select lower(' mf TR') 小写字母, upper('mf TR') 大写字母, initcap('mf TR') 首字母大写 from dual;
Dual是虚表,让我们用表的形式来访问函数的值。
字符串操作函数
其它字符串操作函数
下面三句话是求字符串的长度,字符串要单引。
select lengthc('张三') from dual;--unicode的长度
substr截取字符串
substr(字符串,m,n),m是从第几个字符开始,如果为负的意思是从后边的第几个开始。N是数多少个,如果不说就是一直到字符串的结尾
SQL> select ename,substr(ename,1,1) "第一个字母",substr(ename,-2) "最后两个字母"from emp;
Lpad和rpad字符填充
SQL> select lpad(ename,20,'*') ename,rpad(ename,20,'。') ename from emp;
左填充和右填充,20是总共填充到多少位,*和。是要填充的字符串。
Lpad左填充,rpad右填充,一般的用途是美化输出的结果。
REPLACE替换字符
将字符串中的J全部替换位xj_
该实验的目的是掌握常用的关于数字操作的函数.
ROUND,TRUNC数字操作函数
以小数点位核心,2是小数点后两位,0可以不写,表示取整,-1表示小数点前一位
ROUND是四舍五入:
SQL> SELECT ROUND(45.923,2), ROUND(45.923,0), ROUND(45.923,-1) FROM DUAL;
TRUNC是截断,全部舍弃:
SQL> SELECT TRUNC(45.923,2), TRUNC(45.923), TRUNC(45.923,-2) FROM DUAL;
该实验的目的是掌握常用的关于日期操作的函数.
日期是很特殊的数据类型,用好了可以提高数据库的性能,而使用不当往往是错误的根源,如果你使用字符型数据来存储日期,就放弃日期特有的计算功能。
函数SYSDATE求当前数据库的时间。
日期的显示格式和客户端的配置相关。
SQL> select * from nls_session_parameters
where parameter='NLS_DATE_FORMAT';
代表的含义是凡是列的名称是value的,都按照20个宽度来显示,你想取消该列的定义
col value clear,其中col是column的缩写。你想查看帮助help column即可
重新设定为我们想要的格式。
查看系统时间,数据库本身没有时间,它有scn号,和我们的时间不同。
设定为默认的显示格式
再次查看,我们发现日期的显示随着客户端的格式变化而变化。
日期的内部存储都是以yyyymmddhh24miss存在数据库中
两个日期相减的结果单位为天,往往是带小数点。我们通过函数可以取整。
SQL> select months_between(sysdate,hiredate) 两个日期的月间隔,sysdate,hiredate from emp;
SQL> select sysdate 今天, add_months(sysdate,6) 六个月后 from dual;
SQL> select next_day(hiredate,5) ,hiredate from emp;
select hiredate,round(hiredate,'yyyy') ,round(hiredate,'year') from emp;
select hiredate,trunc(hiredate,'yyyy') ,trunc(hiredate,'year') from emp;
数字的进位和截取是以小数点为中心,我们取小数点前或后的值,而日期的进位和截取是以年,月,日,时,分,秒为中心。
字符串可以转化为数字和日期。
数字要合法,日期要格式匹配。
数字和日期在赋值的时候也可以转为字符串,但在表达式的时候不可以转换。
SQL> select ename,to_char(hiredate,'yyyy/mm/dd') from emp;
SQL> select ename,to_char(hiredate,'fmyyyy/mm/dd') from emp;
其他格式:year,month,mon,day,dy,am,ddsp,ddspth
SQL> select to_char(hiredate,'fmyyyy "年" mm "月" dd "日"') from emp;
select sysdate,to_char(sysdate,'sssss') ss from dual;
格式为9,0,$,l,.
SQL> select ename,to_char(sal,'9999.000') salary from emp;
SQL> select ename,to_char(sal,'$00099999000.00' ) salary from emp;
SQL> select ename,to_char(sal,'l99,999.000') salary from emp;
SQL> select ename,TO_char(sal,'9G999D99') salary from emp;
9是代表有多少宽度,如果不足会显示成######,0代表强制显示0,但不会改变你的结果。G是千分符,D是小数点。
在数据库中16进制的表达是按照字符串来描述的,所以你想将十进制的数转换为十六进制的数使用to_char函数。
其中xxxxx的位数要足够,不然报错,你就多写几个,足够大就可以。
如果你想将十六进制的数转换为十进制的数请使用to_number函数。
SQL> select to_number('abc32','xxxxxxxx') from dual;
日期是格式和语言敏感的,切记!
G为千分符,D为小数点
RR和yy日期数据类型
select to_char(sysdate,'yyyy') "当前",
结果为
yy是两位来表示年,世纪永远和说话者的当前世纪相同。
RR比较灵活,它将世纪分为上半世纪和下半世纪。如果你处于上半世纪,描述的是0-49,那么就和当前世纪相同,描述的是50-99就是上世纪。如果你处于下半世纪,描述的是0-49,那么是下个世纪,描述的是50-99就是当前世纪。从而可以看出,RR的设计完全为了1990年到2010之间我们的思维习惯而设计的。当我们时间到2050前后,使用起来就非常的别扭。
该实验的目的是掌握常用的关于NULL值操作的函数.
如果expr1为非空,就返回expr1, 如果expr1为空返回expr2,两个表达式的数据类型一定要相同。
如果expr1为非空,就返回expr2, 如果expr1为空返回expr3
如果expr1和 expr2相同就返回空,否则返回expr1
返回括号内第一个非空的值。
有奖金就返回奖金,奖金为空就返回0。
select ename 姓名,sal 工资,comm 奖金,sal+nvl(comm,0) 总工资,nvl2(comm,'工资加奖金','纯工资') "收入类别" from emp;
SQL> select ename 姓名,COALESCE(comm,0) "奖金" from emp;
如果有奖金就返回奖金,如果没有奖金就返回0,起个别名叫做"奖金"。
该实验的目的是掌握分支操作的函数.
Case语句
9I以后才支持的新特性,说叫语句其实是函数。目的是为了分支。
例题:判别job,不同工作的人赋予不同的工资,除了CLERK,SALESMAN,ANALYST以外,其它的人工资不变,将函数的值起一个别名为"处理后数据"。
ELSE sal END "处理后数据"
Decode函数:
和CASE语句一样都是分支语句,但Decode函数是ORACLE自己定义的,其它数据库可能不支持。
语法如下:
例题:判别job,不同工作的人赋予不同的工资,除了CLERK,SALESMAN,ANALYST以外,其它的人工资不变,将函数的值起一个别名为"处理后数据"。
, sal ) "处理后数据"
不同工资上的税率不同。每2000一个台阶,8000以上一律40%的税。
该实验的目的是掌握常用的组函数.理解group by的操作.
1。组函数
2。分组统计
3。NULL值在组函数中的作用
4。HAVING的过滤作用
5。组函数的嵌套
这种函数每次处理多行,给出一个返回值
Avg平均
Sum求和
Max最大
Min最小
Count计数
所有组函数,除了count(*)以外,都忽略null值,count是计数,查看有多少行,count(列)是查看该列有多少非空的行。
Group by 子句
Having是在结果中再次筛选。Having一定得出现在group by 子句得后面。不能独立存在。
组函数的嵌套注意要使用GROUP BY子句。
巧用DECODE函数,改变排版方式
SQL>select sum(decode(to_char(hiredate,'yyyy'),'1980',1,0)) "1980",
《完》
本文转自xjzhujunjie 51CTO博客,原文链接:http://blog.51cto.com/xjzhujunjie/866373
Oracle 10g数据库基础之基本查询语句-中-函数相关推荐
- oracle只查询0点数据,Oracle 10g数据库基础之基本查询语句-中-函数
Oracle 10g数据库基础之基本查询语句-中-函数 --资料参考:张烈 张建中<数据库管理员培训讲义> 函数: 使用函数的目的是为了操作数据 将输入的变量处理,返回一个结果. 变量可以 ...
- oracle 10g 连接语句,Oracle 10g数据库基础之基本查询语句-下-连接子查询
实验18:表的连接查询 该实验的目的是掌握基本的联合查询. 表的连接 我们要从多张表中要得到信息,就得以一定的条件将表连接在一 实验18:表的连接查询 该实验的目的是掌握基本的联合查询. 表的连接 我 ...
- Oracle 11g 数据库基础教程
Oracle 11g 数据库基础教程 课堂笔记 系统服务 操作系统通过服务来管理安装好的Oracle 11g数据库产品的运行 在运行Oracle数据库前,要检查数据库服务有没有启动好 开始»控制面板» ...
- oracle10g数据库复制,windows 下oracle 10G 数据库移植到 linux平台 (通过文件直接复制方法)...
windows 下oracle 10G 数据库移植到 linux平台 (通过文件直接复制方法) 最近学习了一下oracle数据库启动原理,于是,就把在windows创建起来做测试的数据库 移植到li ...
- oracle10g 概述,Oracle 10g数据库概述
第一章Oracle 10g数据库概述 1.打开服务:service.msc 2.oracle 10g的分为 (1)oracle 10g数据库标准版1 优点:比互联网和内联网更具有易用性和性能价格比. ...
- Oracle 10g数据库概述
Oracle 10g的特点 1.Oracle 10g 数据库标准版1 (Oracle Database 10g Standard Edition one).为工作组,部门级和互联网/内联网应用程序提供 ...
- 关于oracle查询语句中like '%中文的%' 查询不到数据的问题
关于oracle查询语句中like '%中文的%' 查询不到数据的问题 问题描述: 关于oracle查询语句中like '%中文的%' 查询不到数据的问题解决 起因: 在Windows10 系统环境下 ...
- 从Sql server 2000 到 Oracle 10g数据库迁移数据类型转化
2010-01-12 从Sql server 2000 到 Oracle 10g数据库迁移数据类型转化 文章分类:数据库 SqlServer 2k转换为Oracle 10g 列名 SqlServer数 ...
- java 连接 oracle 10_java-连接到oracle 10g数据库时,获得IOException“...
连接到Oracle 10g数据库时获取IOException:- Exception in thread "main" java.sql.SQLException: Io exce ...
最新文章
- DotNET企业架构应用实践-企业管理软件架构(计算)的历史与发展(上)
- Karma和Jasmine 自动化单元测试环境搭建
- 2017阿里云TECH INSIGHT干货分享第六届隆重回归
- Linux nano编辑txt文件,Linux 文本编辑器 nano 的简单使用
- 强化学习算法Policy Gradient
- HTML 块标签,行内标签,行内块标签以及之间的相互转换
- PostgreSQL学习手册(二) 模式(Schema)
- 万字长文:近年来学界、业界视角下的“事理图谱”发展总结与思考
- 开放科学背景下的科学数据开放共享:国家青藏高原科学数据中心的实践
- 服务器收到消息加入数组,从聊天服务器发送到聊天客户端的数组更新
- java io 创建临时文件,用Java创建一个指定的临时文件
- Linux中yum使用教程,linux中关于yum使用
- 马尔科夫决策过程(MDP):赌徒问题
- cesium多边形描边_cesium--绘制多边形polygon
- Photoshop脚本 设置前景色和背景色
- WARNING: Waited 15 secs for write IO to PST disk 4 in group 3 in alert_asm.log
- LNMP搭建HDwiki
- $('.test:hiden');和$('.test :hiden);区别
- MMDetection(三):公开数据集上测试和训练模型
- Git代码合并之使用 rebase 整理提交历史
热门文章
- boost::fibers::launch::dispatch的测试程序
- Boost:bind绑定全局占位符的测试程序
- DCMTK:读取DICOM图像并创建匹配的演示状态
- DCMTK:测试DcmSCU的C-FIND / GET / MOVE会话处理
- VTK:图表之SelectedVerticesAndEdges
- OpenCV级联识别器cascade recognizer的实例(附完整代码)
- OpenGL Tessellated Triangle镶嵌三角形的实例
- 数组中只出现1次的2个数
- C++内存分配方式以及区别
- C++STL的 list容器