Oracle是对大小写敏感的。。。。
Oracle中的单行函数
1.字符函数:对字符进行操作
select UPPER('smith') from dual;
select * from emp where ename = UPPER('smith');
LOWER('SMitH') ;//变成小写
INITCAP("ddd") ;//第一个字母大写,其他字母小写
SUNSTR(‘hello’,1,3) //字符串截取,注意,SUNSTR(‘hello’,0,3);这两个函数效果一样,因为Oracle认为0和1都是头一个字母
LENGTH('HELLO') ;// 字符串长度
replace('hello','l','x');//这里相当于java中的relpaceAll,结果是hexxo
要求显示所有雇员的姓名以及姓名的后三个字符
方法1:select ename,SUBSTR(ename,LENGTH(ename)-2) FROM emp;:
方法2:select ename ,SUBSTR(ename,-3,3); //从倒数第三个开始取三个
数值函数:对数字进行操作
执行四舍五入: select ROUND(789.536) from dual; //结果为790
select ROUND(789.536,2) from dual //结果为789.54,保留两位小数
select ROUND(789.536,-2) from dual; //结果为800,因为789中9的位置是-1,8的位置是-2,而8又可以进位,所以是800
TRUNC(): 这个函数不会保留任何小数,而且小数点也不会执行四舍五入的操作
select TRUNC(789.536) FROM dual; //结果是789
select TRUNC(789.536,2) FROM dual; //结果是789.53
select TRUNC(789.536,-2) FROM dual; //结果是800
MOD();
select MOD(10,3) FROM dual; //10除以3的余数....结果为1
显示正好为5个字符的员工的姓名:
select ename from emp where LENGTH(ename) = 5;
显示不带R的员工的姓名:
select ename from emp where ename NOT LIKE '%R%';
显示所有员工的前三个字符:
select SUBSTR(ename,0,3) from emp ;
----------------------------------------------------------------------
2.日期函数:
规律:
日期 - 数字 = 日期
日期 + 数字 = 日期
日期 - 日期 = 数字(天数) //这里和java中不同,Java是得到毫秒数
显示10部门雇员进入公司的星期数
1。先获得当前时间:select sysdate from dual
2.求星期数: (当前日期 - 雇佣日期)/7 = 星期数
select empno,ename,(SYSDATE - hiredate)/7 from emp; //不过这里求出来的日期是有小数点的哈
改进: select empno,ename,ROUND((SYSDATE - hiredate)/7) from emp;
select empno,ename,MONTHS_BETWEEN(sysdate,hiredate) from emp;
select ADD_MONTHS(SYSDATE,4) from dual; //在当前时间上加入4个月
求当前日期的下一个星期一是几月几号,如果明天是星期一,那么求出来的日期是明天
select NEXT_DAY(SYSDATE,'星期一') FROM dual;
求出本月的最后一天:
select LAST_DAY(SYSDATE) from dual; //这个函数也就是在当前日期上加上一些天数,不齐到最后一天
找出各月倒数第三天受雇的所有员工:
select empno from emp where LAST_DAY(hiredate)-2 = hiredate;
LAST_DAY(hiredate)意思是各月的倒数第一天,如果LAST_DAY(hiredate)-1显然是倒数第二天,那么LAST_DAY(hiredate)-2显然是倒数第三天
求出工作了7年以上的员工
select * from emp where MONTH_BETWEEN(SYSDATE,hiredate)/12 > 7;
求出受雇员工的年份和月份,按照雇用日期所在月由大到小排序,如果月份相同则将最早年份排在前面。
明确的是: order by 可以对字符串排序
select ename,TO_CHAR(hiredate,'yyyy') year ,TO_CHAR(hiredate,'mm') mon
from emp
order by mon desc,year ;
显示在一个月为30天的情况所有员工的日薪,忽略余数
select ename,ROUND(sal/30) from emp; //注意题目的表达,一个月为30天的情况的意思是每个月都假设只有三十天
找出在二月受聘的员工:
select * from emp where TO_CHAR(hiredate,'mm') = 2; //注意TO_CHAR虽然是把日期转换成字符串,但是在oracle中 如果一个字符串和一个numbe比较,那么这个字符串会自动去掉前导0,然后再转换成number类型。。。。
显示每个员工加入公司的天数
select ename,ROUNC((hiredate - SYSDATE)) date from emp;
以年月日的方式显示所有员工的服务年限,注意:因为有闰年存在,所以天数只能大概求出来
select BETWEEN_AND(SYSDATE,hiredate)*12 year,
MOD(BETWEEN_AND(SYSDATE,hiredate),12) month,
TRUNC(MOD((SYSDATE-hiredate),30)) day
from emp;
--------------------------------------------------------------------------
3.转换函数:
select hiredate from emp; //这个查出来的日期是这种样子的字符串,他会调用一个默认的to_char :12-12月-01
TO_CHAR();//把日期或者数字转换成字符串
select TO_CHAR(hiredate,'yyyy年mm月dd日') from emp;//结果为1986年05月06日 ,注意月和日前面都有前导0
select TO_CHAR(hiredate,'fmyyyy年mm月dd日') from emp; //在前面加上fm,则会去掉前导0
select TO_CHAR(sal,'99,999') from emp; //其中9代表一位数字,那么这样表示出来的金额就会以,分隔了
select TO_CHAR(sal,'$99,999') from emp; //结果前面加上了一个$符号 ,如 $23,783
select TO_CHAR(sal,'L99,999') from emp; //L表示Local,会以本地字符集显示
TO_NUMBER();//是将 字符串 变成数字的一种函数
select TO_NUMBER('123') + TO_NUMBER('123') from dual;
TO_DATE();//将 字符串 变成date类型
select TO_DATE('2009-02-16','yyyy-mm-dd') from dual; //又因为是显示,那么他会自动调用默认to_char转换为默认格式
---------------------------------------------------------------------
4.通用函数:
求雇员年薪:
select empno,ename,(sal+comm)*12 from emp; //这样求出来的年薪有些是空值,原因是有些雇员的奖金是NULL,NULL经计算之后结果还是NULL
使用NVL()函数:可以将一个空值变成指定的内容 , Null to value,也就是使null有值
select empno,ename,(sal+NVL(comm,0))*12 from emp;
DECODE(1,1,'内容是1',2,'内容是2',3,'内容是3'); //相当于switch(1){
case 1 : '内容是1';break;
case 2 : ' 内容是2';break;
case 3 :'内容是3';break;
} 我们可以把这个函数理解为 把第一个表达式解码成我们需要的内容
select empno ,DECODE(job,'CLEAR','业务员','SALESMAN','销售人员');
分享到:
相关推荐
单行函数是指对单数据行进行操作,并且每行都返回一个结果的函数。单行函数的不同类型有: 1. 字符型函数:包括 LOWER、UPPER、INITCAP、CONCAT、SUBSTR、LENGTH、INSTR、LPAD、TRIM 等。 * LOWER 函数:将字符串...
### Oracle 第四章 单行函数 #### 一、引言 在Oracle数据库的学习过程中,了解并掌握单行函数是非常重要的一步。单行函数是指针对每一行的数据进行处理,并返回一个处理结果的函数。这类函数在查询语句中非常常见,...
Oracle数据库系统提供了丰富的单行函数,这些函数在日常的编程和数据处理中极为重要。本文主要介绍Oracle中的字符函数、数学函数、日期函数以及转换函数。 首先,让我们详细探讨字符函数。字符函数主要用于处理字符...
在这个“Oracle查询练习(单行,函数查询)”中,我们将深入探讨两种关键的查询技术:单行函数和组函数。 单行函数主要应用于对单个值进行操作并返回一个新值。这些函数广泛用于数据转换、计算和格式化。例如,`...
### ORACLE单行函数和组函数详解 #### 一、概述 在Oracle数据库中,函数是一种重要的编程元素,用于执行特定任务并返回结果。根据其处理数据的方式不同,可以将Oracle函数大致分为两类:单行函数和组函数(也称聚合...
### Oracle_PL(SQL)单行函数和组函数及使用 #### 一、概述 在Oracle数据库中,SQL 和 PL/SQL 提供了大量的内置函数,这些函数可以极大地提高开发效率和简化查询逻辑。根据处理数据的不同方式,这些函数可以分为...
oracle笔记单行函数,oracle中单行函数有哪些,如何使用,具体案例和代码!
这部分内容可能包括变量声明、控制结构(如IF-THEN-ELSE、LOOP)、异常处理以及如何编写过程和函数,游标则是处理单行记录的工具。 "第23部分 oracle11g的程序包.ppt"将讲解如何组织和封装PL/SQL代码为程序包,以便...
你可以学习如何创建自定义函数,以及如何在SQL查询和存储过程中使用这些函数,这在`1-oracle教程之存储过程-函数-触发器.ppt`中会有详细介绍。 触发器是数据库响应特定事件(如INSERT、UPDATE或DELETE)时自动执行...
### Oracle数据库单行函数知识点详解 #### 一、数值处理函数 **1. ROUND 函数** - **功能描述:** `ROUND` 函数用于对数值进行四舍五入操作,可以指定四舍五入的精度。 - **语法结构:** `ROUND(number, ...
- 在PL/SQL中,游标用于处理单行结果集。`DECLARE`, `OPEN`, `FETCH`, `CLOSE`是游标的常用操作。 9. **会话(Session)管理**: - `SESSION`在Oracle中指的是用户与数据库之间的交互过程。 - `ALTER SESSION`: ...
3. **单行函数**:包括字符串函数(如LOWER, UPPER, CONCAT)、数值函数(如ROUND, TRUNC)、日期函数(如SYSDATE, ADD_MONTHS)和转换函数(如TO_CHAR, TO_DATE),这些函数可以改变或操作单个值。 4. **多表查询*...
Oracle 函数大全 Oracle 函数大全是 Oracle 数据库管理系统中的一系列函数,...本文档中还介绍了更多的单行函数和组函数,详细的讲解了每个函数的使用方法和示例代码,为开发者提供了一个 Oracle 函数大全的参考手册。
5. **游标**:游标是处理单行记录的指针,常用于遍历查询结果集。例如: ``` DECLARE cursor_name CURSOR FOR SELECT column1, column2 FROM table_name; var1 column1%TYPE; var2 column2%TYPE; BEGIN OPEN ...
本篇文章将详细讲解PL/SQL中的单行函数和组函数。 首先,单行函数是针对单行数据进行操作的函数,它们可以应用于SQL查询的不同部分,如SELECT、WHERE、ORDER BY等。例如,`TO_CHAR`函数用于格式化日期或数值输出,`...
5. **游标**: 游标是PL/SQL中处理单行或多行查询结果的重要工具。通过游标,你可以逐行处理结果集,这对于迭代处理数据非常有用。 6. **存储过程和函数**: 存储过程和函数是PL/SQL中的重要特性,它们允许你在数据库...
总的来说,理解并熟练运用Oracle的单行函数和组函数对于数据库管理和开发至关重要。通过这些函数,我们可以更有效地处理数据,创建复杂的查询,优化性能,以及构建复杂的业务逻辑。不断学习和实践,将有助于提高你在...
这个函数自Oracle 9i起引入,主要用于层次查询,它能够生成从父节点到当前行的路径。例如,在给出的SQL语句中,`sys_connect_by_path(tname, ' ')`将`tname`字段的值连接起来,以空格分隔,形成一条路径,展示了...