dual 是一个 用来测试函数和表达式的伪表
内容分为 单行 多行 函数两块:
字符函数:
1 大小写函数
select lower('Hello world') as 转小写, upper('Hello World') as 转大写,initcap('zm') as 首字母大写 from dual;
hello world | HELLO WORLD | Zm |
2 截取函数
--substr(a,b) 从a中,第b位开始取,取右边所有的字符
select substr('hello world',3) from dual;
--substr(a,b,c) 从a中,第b位开始取,取c位
select substr('hello world',3,4) from dual;
3 字符/字节长度
--length 字符数 lengthb 字节数
select length('中国') 字符数,lengthb('中国') 字节数 from dual;
2 | 4 |
4 instr 查询子串位置
instr(a,b) 从a中查找b,找到返回下标(从1开始计数),否则返回0
select instr('hello world','ll') from dual;
3 |
5 左/右填充 lpad(src,10填满后长度,str用这个字符来填充)
select lpad('abcd',10,'*') 左,rpad('abcd',10,'*') 右 from dual;
******abcd | abcd****** |
6 trim(不仅仅是去掉空格)
select trim('H' from 'Hello WorldH') as trim from dual;
ello World |
7 替换函数 replace
select replace('hello world','l','*') as replaceres from dual;
he**o wor*d |
数字函数:
1 四舍五入 ROUND(srcNum, 保留小数位数)
select ROUND(45.926, 2) 一,ROUND(45.926, 1) 二,ROUND(45.926, 0) 三,ROUND(45.926, -1) 四, ROUND(45.926, -2) 五 from dual;
45.93 | 45.9 | 46 | 50 | 0 |
2 截断函数 TRUNC (仅仅是截断,不会四舍五入)
select TRUNC(45.926, 2) 一,TRUNC(45.926, 1) 二,TRUNC(45.926, 0) 三,
TRUNC(45.926, -1) 四, TRUNC(45.926, -2) 五 from dual
45.92 | 45.9 | 45 | 40 |
日期函数:
oracle只有 date, datestamp 两种类型, mysql有三种,date,datatime, datestamp;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as time from dual;
2014-06-04 13:53:15 |
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss:ff') as time from dual;
2014-06-04 13:50:56:045000 |
日期格式的元素:
格式 | 举例 |
YYYY | 2010 |
YEAR | 年的英文名称 twenty ten |
MM | 两位数字 不足补0 06 |
MONTH | 4月 |
DY | 星期一 |
DAY | 星期一 |
DD | 一个月的第几天 02 |
转换函数:
数据类型转换分为两种: 显示 和 隐式
oracle自动隐式转换如下:
源数据类型 | 目标数据类型 |
varchar2/char | number |
varchar2/char | date |
number | varchar2 |
date | varchar2 |
eg: select * from emp where hiredate = '17-11月-81'; 这就是典型将符合oracle日期格式的字符串隐式转换成日期后在查询的例子。
显示函数:
1 to_char
to_char函数常用到的格式:
9 | 数字 |
0 | 零 |
$ | 美元 |
L | 本地货币符号 |
. | 小数点 |
, | 千位符 |
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是" day') as today from dual;
2014-06-04 14:51:25今天是 星期三 |
利用 to_char函数,将工资显示的转化成我们想看到的格式:
select to_char(sal,'L9,999.99') as sal from emp;
¥6,000.00 |
¥800.00 |
¥1,600.00 |
¥1,250.00 |
¥2,975.00 |
¥1,250.00 |
¥2,850.00 |
通用函数:
nvl2(a,b,c) 当a=null时,返回c,否则返回b
select sal*12+nvl2(comm,comm,0) from emp;
72000 |
9600 |
19500 |
15500 |
35700 |
16400 |
34200 |
条件表达式:
1 case:
select ename,job,sal as 原始薪 ,
case job when 'PRESIDENT' then sal + 1000
when 'MANAGER' then sal+800
else sal + 300
end as 长后薪
from emp;
Tom_ABCD | 6000 | 6300 | |
SMITH | CLERK | 800 | 1100 |
ALLEN | SALESMAN | 1600 | 1900 |
WARD | SALESMAN | 1250 | 1550 |
2 decode
decode (col|expression, search1, result1[, search2, result2,...,]
[,default])
看col|expression的数值,如果是search1,则执行 result1,如果是search2,则执行 result2... 如果都不说,则执行default
select ename,job,sal 涨前薪水,
decode(job,'PRESIDENT',sal+1000,
'MANAGER',sal+800,
sal+400) 涨后薪水
from emp;
Tom_ABCD | 6000 | 6400 | |
SMITH | CLERK | 800 | 1200 |
ALLEN | SALESMAN | 1600 | 2000 |
WARD | SALESMAN | 1250 | 1650 |
案例: 统计 1980,1981,1982,1987年入职的员工:
select count(*) Total,
sum(decode(to_char(hiredate,'RR'),'80',1,0)) "1980",
sum(decode(to_char(hiredate,'RR'),'81',1,0)) "1981",
sum(decode(to_char(hiredate,'RR'),'82',1,0)) "1982",
sum(decode(to_char(hiredate,'RR'),'87',1,0)) "1987"
from emp;
15 | 1 | 10 | 1 | 2 |
相关推荐
在本课程"MLDN魔乐科技JAVA培训_Oracle课堂6_排序、单行函数"中,我们将深入探讨Java编程与Oracle数据库中与排序和单行函数相关的知识点。这两个主题对于任何数据库开发者或Java应用程序员来说都是至关重要的,因为...
### Oracle数据库单行函数知识点详解 #### 一、数值处理函数 **1. ROUND 函数** - **功能描述:** `ROUND` 函数用于对数值进行四舍五入操作,可以指定四舍五入的精度。 - **语法结构:** `ROUND(number, ...
首先,我们关注的是SQL中的单行函数。这些函数主要用于处理单行数据,包括字符、数字、日期、转换和混合类型等,可以应用于SELECT、WHERE、ORDER BY等子句。例如,`TO_CHAR`函数用于格式化日期或数字,`UPPER`函数将...
Oracle是世界上最广泛使用的数据库管理系统之一,对于任何想要深入IT领域的人来说,掌握Oracle基础知识至关重要。以下是一些关于Oracle必学知识的详细阐述: 1. **Oracle简介及安装**:Oracle数据库系统是一个关系...
Oracle基础知识是一门数据库管理系统的基础课程,本课程涵盖了Oracle数据库的基本概念、结构化查询语言(SQL)基础知识、查询语句的编写、数据限制和排序、单行函数等内容。 一、结构化查询语言(SQL)基础知识 ...
- Les03_单行函数.ppt介绍了如TO_CHAR、LOWER、UPPER等单行函数,用于数据转换和操作。 - Les04_多表查询.ppt则深入到更复杂的联接操作,如INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN。 3. **数据处理与分组*...
### Oracle 10g PL/SQL 实战笔记关键知识点解析 #### 一、PL/SQL 概述 - **PL/SQL** (Procedural Language for SQL) 是 Oracle 数据库的一种扩展,它...这些基础知识对于从事 Oracle 数据库开发的人员来说至关重要。
本教程《Oracle 8i PL/SQL高级程序设计》可能涵盖了以下几个核心知识点: 1. **基础语法**:PL/SQL的基础包括声明变量、常量、游标、表类型等。学习如何定义变量,以及如何在程序块(BEGIN...END)中使用它们。理解...
单行函数作用于一行数据,返回单个结果,而分组函数如COUNT、SUM、AVG等则对一组数据进行计算。分组函数通常与GROUP BY子句一起使用,以对数据进行聚合操作。 6. 数据操纵语言命令 DML(Data Manipulation Language...
数据库的介绍、分类 重点:oracle的历史、版本、安装平台 ...单行函数 对三、四两节的巩固练习 高级查询 表的管理、约束及伪列的使用 表的集合操作 视图、序列、用户管理 介绍一下oracle的开发工具
2. **Oracle SQL扩展**:Oracle数据库支持标准SQL的同时,还引入了一些自己的扩展,如PL/SQL,这是一种过程化的编程语言,用于编写存储过程、函数和触发器。 3. **子查询**:Oracle SQL中的子查询允许在查询中嵌套...
这份手册旨在帮助用户理解和掌握在Oracle环境中进行数据管理和编程的基础知识。 在SQL语法部分,手册涵盖了创建数据库对象的核心语句,如: 1. **CREATE TABLE** 语句:用于创建数据库中的表。你可以定义表的结构...
Oracle提供了一系列单行函数,例如日期函数,如Add_months用于增加日期的月份,Last_day返回指定日期所在月份的最后一天,Months_between计算两个日期之间的月份数,而Round则可以对日期进行四舍五入到指定单位。...
提供的压缩包文件可能包含了这些主题的详细教程或示例代码,如"PLSQL1.pdf"可能涵盖了基础概念和语法,"PLSQL2.pdf"可能深入到更高级的主题如游标和异常处理,而"PLSQL3.pdf"可能涉及性能优化和并发控制等内容。...
理解这些基础知识是编写有效PL/SQL程序的前提。 其次,PL/SQL中的子程序(包括函数和过程)是其核心特性之一。通过定义和调用子程序,开发者可以实现代码复用和模块化。书中会讲解如何创建、调用和参数传递,以及子...
针对初学者,了解Oracle的基础知识至关重要。以下将根据提供的压缩包文件名称,详细讲解Oracle的一些核心概念。 首先,我们从“第1章_Oracle数据库基础.pdf”开始。这一章节通常会介绍Oracle数据库的基本架构,包括...
以上是Oracle基础训练的主要内容,通过深入学习和实践,你将能熟练掌握Oracle数据库的基础操作和高级特性。"Oracle基礎教程(一).ppt"至"Oracle基礎教程(三).ppt"中的材料将帮助你逐步掌握这些知识,为你的数据库管理...