`

oracle-----单行函数

阅读更多
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','销售人员'); 
    

分享到:
评论

相关推荐

    oracle-函数.pptx

    单行函数是指对单数据行进行操作,并且每行都返回一个结果的函数。单行函数的不同类型有: 1. 字符型函数:包括 LOWER、UPPER、INITCAP、CONCAT、SUBSTR、LENGTH、INSTR、LPAD、TRIM 等。 * LOWER 函数:将字符串...

    oracle第4章 单行函数

    ### Oracle 第四章 单行函数 #### 一、引言 在Oracle数据库的学习过程中,了解并掌握单行函数是非常重要的一步。单行函数是指针对每一行的数据进行处理,并返回一个处理结果的函数。这类函数在查询语句中非常常见,...

    Oracle常用单行函数

    Oracle数据库系统提供了丰富的单行函数,这些函数在日常的编程和数据处理中极为重要。本文主要介绍Oracle中的字符函数、数学函数、日期函数以及转换函数。 首先,让我们详细探讨字符函数。字符函数主要用于处理字符...

    Oracle查询练习(单行,函数查询)

    在这个“Oracle查询练习(单行,函数查询)”中,我们将深入探讨两种关键的查询技术:单行函数和组函数。 单行函数主要应用于对单个值进行操作并返回一个新值。这些函数广泛用于数据转换、计算和格式化。例如,`...

    ORACLE单行函数和组函数

    ### ORACLE单行函数和组函数详解 #### 一、概述 在Oracle数据库中,函数是一种重要的编程元素,用于执行特定任务并返回结果。根据其处理数据的方式不同,可以将Oracle函数大致分为两类:单行函数和组函数(也称聚合...

    Oracle_PL(SQL)单行函数和组函数及使用

    ### Oracle_PL(SQL)单行函数和组函数及使用 #### 一、概述 在Oracle数据库中,SQL 和 PL/SQL 提供了大量的内置函数,这些函数可以极大地提高开发效率和简化查询逻辑。根据处理数据的不同方式,这些函数可以分为...

    oracle笔记单行函数

    oracle笔记单行函数,oracle中单行函数有哪些,如何使用,具体案例和代码!

    oracle-11G-培训PPT文件

    这部分内容可能包括变量声明、控制结构(如IF-THEN-ELSE、LOOP)、异常处理以及如何编写过程和函数,游标则是处理单行记录的工具。 "第23部分 oracle11g的程序包.ppt"将讲解如何组织和封装PL/SQL代码为程序包,以便...

    1-oracle培训整套教程(存储过程-函数-触发器,异常处理,游标.存储包)

    你可以学习如何创建自定义函数,以及如何在SQL查询和存储过程中使用这些函数,这在`1-oracle教程之存储过程-函数-触发器.ppt`中会有详细介绍。 触发器是数据库响应特定事件(如INSERT、UPDATE或DELETE)时自动执行...

    Oreacle数据库单行函数练习题(包答案)

    ### Oracle数据库单行函数知识点详解 #### 一、数值处理函数 **1. ROUND 函数** - **功能描述:** `ROUND` 函数用于对数值进行四舍五入操作,可以指定四舍五入的精度。 - **语法结构:** `ROUND(number, ...

    oracle-非常有用的查询语句整理(一)

    - 在PL/SQL中,游标用于处理单行结果集。`DECLARE`, `OPEN`, `FETCH`, `CLOSE`是游标的常用操作。 9. **会话(Session)管理**: - `SESSION`在Oracle中指的是用户与数据库之间的交互过程。 - `ALTER SESSION`: ...

    ORACLE-SQL语句学习教程解读.pdf

    3. **单行函数**:包括字符串函数(如LOWER, UPPER, CONCAT)、数值函数(如ROUND, TRUNC)、日期函数(如SYSDATE, ADD_MONTHS)和转换函数(如TO_CHAR, TO_DATE),这些函数可以改变或操作单个值。 4. **多表查询*...

    oracle函数大全.doc

    Oracle 函数大全 Oracle 函数大全是 Oracle 数据库管理系统中的一系列函数,...本文档中还介绍了更多的单行函数和组函数,详细的讲解了每个函数的使用方法和示例代码,为开发者提供了一个 Oracle 函数大全的参考手册。

    Oracle-Pl-Sql 内部培训课件

    5. **游标**:游标是处理单行记录的指针,常用于遍历查询结果集。例如: ``` DECLARE cursor_name CURSOR FOR SELECT column1, column2 FROM table_name; var1 column1%TYPE; var2 column2%TYPE; BEGIN OPEN ...

    PLSQL单行函数和组函数详解

    本篇文章将详细讲解PL/SQL中的单行函数和组函数。 首先,单行函数是针对单行数据进行操作的函数,它们可以应用于SQL查询的不同部分,如SELECT、WHERE、ORDER BY等。例如,`TO_CHAR`函数用于格式化日期或数值输出,`...

    Oracle-PL-SQL.zip_oracle

    5. **游标**: 游标是PL/SQL中处理单行或多行查询结果的重要工具。通过游标,你可以逐行处理结果集,这对于迭代处理数据非常有用。 6. **存储过程和函数**: 存储过程和函数是PL/SQL中的重要特性,它们允许你在数据库...

    oracle总结,PLSQL单行函数和组函数详解

    总的来说,理解并熟练运用Oracle的单行函数和组函数对于数据库管理和开发至关重要。通过这些函数,我们可以更有效地处理数据,创建复杂的查询,优化性能,以及构建复杂的业务逻辑。不断学习和实践,将有助于提高你在...

    oracle-sql

    这个函数自Oracle 9i起引入,主要用于层次查询,它能够生成从父节点到当前行的路径。例如,在给出的SQL语句中,`sys_connect_by_path(tname, ' ')`将`tname`字段的值连接起来,以空格分隔,形成一条路径,展示了...

Global site tag (gtag.js) - Google Analytics