zoukankan      html  css  js  c++  java
  • 单行函数

    注 :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替换为办事员,查询不到的返回

  • 相关阅读:
    HDU 4278 Faulty Odometer 8进制转10进制
    hdu 4740 The Donkey of Gui Zhou bfs
    hdu 4739 Zhuge Liang's Mines 随机化
    hdu 4738 Caocao's Bridges tarjan
    Codeforces Gym 100187M M. Heaviside Function two pointer
    codeforces Gym 100187L L. Ministry of Truth 水题
    Codeforces Gym 100187K K. Perpetuum Mobile 构造
    codeforces Gym 100187J J. Deck Shuffling dfs
    codeforces Gym 100187H H. Mysterious Photos 水题
    windows服务名称不是单个单词的如何启动?
  • 原文地址:https://www.cnblogs.com/fcitx/p/11333163.html
Copyright © 2011-2022 走看看