• 单行函数


    注 :dual 是一个虚拟表,用来构成select的语法规则,它实际是不存在的

    一:单行函数

    •字符串处理函数:UPPER(),LOWER() ,INITCAP(),LENGTH(),SUBSTR(),REPLACE();

    •数值处理函数:ROUND(),TRUNC(),MOD();

    •日期处理函数:ADD_MONTHS(),MONTHS_BETWEEN(),LAST_DAY(),NEXT_DAY();

    •转换函数:TO_DATE(),TO_CHAR(),TO_NUMBER();

    •通用函数:NVL(),DECODE()。

    1.字符串处理函数

    (1).转大小写函数:

        •转大写函数:UPPER(字符串 | 列);

        •转小写函数:LOWER(字符串| 列);

    SELECT LOWER(ename) FROM 表名 ;                    //查询表里员工姓名,姓名小写显示

    SELECT * FROM 表名 WHERE ename=UPPER('inputName');                    //查询输入的员工姓名,转大写

    (2).获取字符串长度:

         •长度函数:数字 LENGTH(字符串 | 列);

    SELECT * FROM emp WHERE LENGTH(ename) = 5 ;                    //查询所有姓名长度为5的雇员信息

    (3).字符串截取; SUBSTR(汉译:字符串的子串,就是截取呀)

        •截取函数:字符串 SUBSTR(字符串| 列 ,截取索引起始,[长度]),如果没有长度,表示截取到结尾 ;

    SELECT 'HELLO' ,SUBSTR('HELLO',2,3) FROM  表名 ;                       //从表里截取‘HELLO’字符串,从第二位开始,截取3个长度

    SELECT ename,SUBSTR(ename,LENGTH(ename)-2) FROM emp ;        //查询雇员姓名后三位字符,这里使用的是传统索引

    SELECT ename,SUBSTR(ename , -3) FROM emp ;        //查询雇员姓名后三位字符,Oracle支持有负数索引

    备注:Oracle的截取索引是从1开始的,而我们在其他程序索引都是从第0位开始的

    (4).字符串替换:

        • 替换函数:字符串 REPLACE(字符串 | 列 , 原始内容,替换内容)

         SELECT REPLACE('HELLO', 'E' , 'M') FROM dual ;                   //把“HELLO”中的“E”替换为“M”;

    2.数值处理函数

    (1)四舍五入:

              四舍五入:数字 ROUND(数值 | 列[,保留小位数位数])

             SELECT ROUND(1.23456) FROM dual ;                       //处理后的结果为 ”1“

             SELECT ROUND(1.123456,2) FROM dual ;                  //处理后的结果为1.12 ,保留了2位小数位

             SELECT ROUND(399,-2) FROM dual ;                            //处理后的结果为400,当保留小数的位数设置为负数,则表示操作的是整数

    (2)截取小数(省略小数位):

             截取小数:SELECT TRUNC(数值 | 列 [,保留小数位])                                //   TRUNC汉译:将数字截尾取整

                  SELECT TRUNC(1.123456) FROM dual ;                                          //运行结果为:1

                  SELECT   TRUNC(1999,-3) FROM dual ;                                          //执行结果为:19

    (3)     求模(余数):

           •      求模函数:数值MOD(数值 1 | 列 1,数值2 | 列2)

                    SELECT MOD (20,7) FROM dual ;                                                   //执行结果: 余数为 6  

    3.日期函数

    (1)SYSDATE :系统日期

             SELECT SYSDATE FROM FROM dual ;                                    //获取当前日期

           SELECT SYSDATE + 300 FROM  dual ;                                     //获取300天后日期

              SELECT SYSDATE -  500 FROM  dual ;                                     //获取500天前日期

              SELECT SYSDATE - hiredate FROM  emp ;                                //获取雇员被雇佣天数

    (2)SYSTIMESTAMP: 时间戳                                         

             SLEECT SEYSTIMESTAMP FROM dual ;                                                  //获取当前时间戳

    (3)ADD_MONTHS() :计算若干月之后日期

              SELECT ADD_MONTHS(SYSDATE,10) FROM dual ;                                 //10个月之后的日期

    (4)LAST_DAY():获取当前月的最后一天日期

         SELECT LAST_DAY(SYSDATE) FROM dual ;               

         SELECT ename,hiredate,LAST_DAY(hiredate)-2 FROM emp ;                       //雇佣所在月倒数第三天

    (5)NEXT_DAY():获取下一个指定日期时间数的日期;

         SELECT NEXT_DAY(SYSDATE,'星期二') FROM dual ;

      (6)MONTHS_BETWEEN():计算两个日期之间所跨越的总月数;

           SELECT ename,MONTHS_BETWEEN(SYSDATE,hiredate) FROM emp;       //从雇佣到现在日期时长

           SELECT ename,hirtedate,TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) year FROM emp ;   // 计算雇佣年份

           SELECT ename,hiredate,TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) year,

                                                        TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,hiredate),12)) months   FROM emp ;    //计算雇佣年份加月份

           SELECT ename,hiredate,TRUNC(MONTHS_BETWEEN(SYSDATE,hiredate)/12) year,

                                                        TRUNC(MOD(MONTHS_BETWEEN(SYSDATE,hiredate),12)) months   FROM emp

                                                       TRUNC(SYSDATE-ADD_MONTHS(hiredate,MONTHS_BETWEEN(SYSDATE,hiredate))) day FROM emp;    //计算雇佣年份加月份

    5.转换函数:

    TO_CHAR(日期|数字|列,转换格式):可以将数字或日期进行格式化的显示处理

    (1)日期转换

    SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM dual ;                                  //日期转换

    SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FROM dual ;                //详细时间转换

    (2)货币转换

    SELECT TO_CHAR(123456,'L999,999') FROM dual;               //执行结果 :999,999

    TO_DATE(字符串 | 列,格式):将字符串转为DATE类型

    SELECT TO_DATE('2006-11-20 20:39:15','yyyy-mm') FROM dual ;                           //日期转换

    TO_NUMBER()日期转换

    SELECT TO_NUMBER(‘1’) + TO_NUMBER('2') FROM dual ;          //运行结果 :3

    SELECT '1' + '2' dual ;                                    //运行结果:3

    6.通用函数:

     NVL() :把空转换为0,当需要数据计算时使用

    SELECT ename,comm,NVL(comm,0),(sal+NVL(comm,0)) * 12 income FROM emp ;                     //运行结果:把空值替换为0了

    DECODE() :数值内容的判断与替换操作

    DECODE(数据 | 列,匹配内容1,返回内容1,[不满足时的内容])

    SELECT ename,job ,DECODE(job,'CLERK','办事员',‘无法判断的内容’)decode FROM emp;              //这里对指定的CLERK替换为办事员,查询不到的返回

  • 相关阅读:
    通过实验窥探javascript的解析执行顺序
    HTML5实战与剖析之原生拖拽(四可拖动dragable属性和其他成员)
    Google Guava之Optional优雅的使用null
    sharding-jdbc源码学习(一)简介
    重构——改善既有代码的设计
    spring自定义标签
    java自定义注解
    开源项目集合
    Lombok引入简化Java代码
    设计模式之建造者模式
  • 原文地址:https://www.cnblogs.com/fcitx/p/11333163.html
Copyright © 2020-2023  润新知