zoukankan      html  css  js  c++  java
  • oracle学习之一数字函数

    1、Round:四舍五入

    Round(45.926,2)→45.93

    2、Trunc:截断

    Trunc(45.926,2)→45.92

    3、Mod:求余

    Mod(1600,300)→100

    dual是一个"伪表",可以用来测试函数和表达式。

    Round(45.923,0)保留整数位,结果是46。

    Round(45.923,-1)取整数位的第二位。就是取十位,结果是50。

    Round(45.923,-2)取整数位的第三位。就是取百位,结果为0。

    4、日期

    oracle中日期型数据实际含有2个值:日期和时间。默认的日期格式是DD-MON-RR.

    查询系统时间:select sysdate from dual;

    转化系统时间:select tochar(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

    日期函数:MONTH_BETWEEN   两个日期相差的月数

         ADD_MONTHS   向指定日期中加上若干月数

         NEXT_DAY  指定日期的下一个日期

         LASTDAY 本月的最后一天

           ROUND  日期四舍五入

           TRUNC(日期截断)

    字符控制函数

    concat: 字符连接函数, 等同于  ||

    select concat('Hello',' World') from dual;

    substr:求母串中的某个子串

    select substr('Hello World',3) from dual;

    SUBSTR('H                                                                                                                                             

    ---------                                                                                                                                             

    llo World    

    select substr('Hello World',3,5) from dual;

    SUBST                                                                                                                                                 

    -----                                                                                                                                                 

    llo W    

    length和lengthb: 字符数和字节数

    SQL> select length('China') 字符数, lengthb('China') 字节数  from dual;

        字符数     字节数                                                                                                                                 

    ---------- ----------                                                                                                                                 

             5          5                                                                                                                                 

    select length('中国') 字符数, lengthb('中国') 字节数  from dual;
     
        字符数     字节数                                                                                                                                 
    ---------- ----------                                                                                                                                 
             2          4                                                                                                                                 
    instr:在母串中,查找子串的位置
    SQL> select instr('Hello World','ll') from dual;
     
    INSTR('HELLOWORLD','LL')                                                                                                                              
    ------------------------                                                                                                                              
                           3                                                                                                                              
    lpad,rpad: 左右填充
    SQL> --将abcd用*填充到10位
    SQL> select lpad('abcd',10,'*') 左填充, rpad('abcd',10,'*') 右填充 from dual;
     
    左填充     右填充                                                                                                                                     
    ---------- ----------                                                                                                                                 
    ******abcd abcd******                                                                                                                                 
    trim: 去掉字符串前后指定的字符
    SQL> select trim('H' from 'Hello WorldH') from dual;
     
    TRIM('H'FR                                                                                                                                            
    ----------                                                                                                                                            
    ello World     
    replace:字符串替换函数
    SQL> select replace('Hello Wordl','l','*') from dual;
     
    REPLACE('HE                                                                                                                                           
    -----------                                                                                                                                           
    He**o Word*    
    数字函数
    SQL> select round(45.926,2) 四舍五入, trunc(45.926,2)  截断 ,mod(1600,300) 求于
      2  from dual;
     
      四舍五入       截断       求于                                                                                                                      
    ---------- ---------- ----------                                                                                                                      
         45.93      45.92        100                                                                                                                      
    select round(45.923,0) 整数位, round(45.923,-1) 十位,round(45.923,-2) 百位 from dual;
     
        整数位       十位       百位                                                                                                                      
    ---------- ---------- ----------                                                                                                                      
            46         50          0                                                                                                                      
     
    已选择 1 行。
    显示时间部分
    SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
     
    TO_CHAR(SYSDATE,'YY                                                                                                                                   
    -------------------                                                                                                                                   
    2011-09-17 14:29:17    
    显示昨天,今天和明天
    SQL> select sysdate-1 昨天, sysdate 今天, sysdate+1 明天 from dual;
     
    昨天           今天           明天                                                                                                                    
    -------------- -------------- --------------                                                                                                          
    16-9月 -11     17-9月 -11     18-9月 -11                                                                                                              
    两个日期相减,结果为相差的天数
    SQL> --查询员工信息,显示员工工龄
    SQL> select empno,ename, sysdate-hiredate 天 from emp;
    查询员工信息,显示员工工龄,分别按照天,星期,月显示
    SQL> select empno,ename,sysdate-hiredate 天,(sysdate-hiredate)/7 星期, (sysdate-hiredate)/30 月
      2  from emp;
    months_between:两个日期相差的月数
    SQL> select (sysdate-hiredate)/30 方式一, months_between(sysdate,hiredate) 方式二
      2  from emp;
    select add_months(sysdate,1)  下个月, add_months(sysdate,123) "123个月后"
      2* from dual
    SQL> /
     
    下个月         123个月后                                                                                                                              
    -------------- --------------                                                                                                                         
    17-10月-11     17-12月-21  
    last_day: 某个日期当月的最后一天
    SQL> select last_day(sysdate) from dual;
    next_day:下周六
    SQL> select next_day(sysdate,'星期五') from dual;
    对日期进行四舍五入
    SQL> select round(sysdate,'MONTH')  月,round(sysdate,'YEAR') from dual;
    对日期进行截断
    SQL> select trunc(sysdate,'MONTH')  月,trunc(sysdate,'YEAR') from dual;
    隐式转换的前提:被转换对象一定是可以转换的
    SQL> select * from emp where hiredate=to_date('1982-01-23','yyyy-mm-dd');
    日期格式
    SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
    查询当前日期:显示:  2011-09-17 15:12:15今天是星期六
    SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;
    查询员工信息,显示员工的编号,姓名,月薪,要求有货币代码,千位符,两位小数
    SQL> --1600 -> 1,600.00
    SQL> select empno,ename,to_char(sal,'L9,999.99') from emp;
    通用函数
    SQL> --nvl和nvl2
    SQL> --nvl(exp1,exp2):当exp1为空时,返回exp2
    SQL> --nvl2(exp1,exp2,exp3):当exp1为空时,返回exp3;否则返回exp2
    SQL> --查询员工的年收入
    SQL> select ename,sal*12+nvl2(comm,comm,0) 年收入
      2  from emp;
    COALESCE :找到参数列表中,第一个不为空的值
    SQL> select ename,comm,sal,COALESCE(comm,sal) from emp;
    select ename,job,sal 涨前工资, case job when 'PRESIDENT' then sal+1000
      2                                          when 'MANAGER'   then sal+600
      3                                          else sal+400
      4                                 end 涨后工资
      5  from emp;
    select ename,job,sal 涨前工资, decode(job,'PRESIDENT',sal+1000,
      2                                            'MANAGER',sal+600,
      3                                             sal+400) 涨后工资
      4  from emp;
     
  • 相关阅读:
    【自动化__GUI自动化】__java__案例__java应用程序计算器__类直接被调用__1个进程
    【自动化__GUI自动化】__java__案例__java应用程序计算器
    【自动化__GUI自动化】__java__案例__类反射
    【自动化__GUI自动化】__java__Agileone__seniumIDE
    【自动化__GUI自动化】__java__Windows应用程序识别__计算器
    【自动化__GUI自动化】__C#__Windows应用程序识别__计算器
    【自动化__GUI自动化】__java__模拟功能操作__猴子测试
    【自动化__GUI自动化】__java__模拟功能操作__键盘
    【自动化__GUI自动化】__java__模拟功能操作__鼠标
    鼠标
  • 原文地址:https://www.cnblogs.com/caishuhua226/p/2455687.html
Copyright © 2011-2022 走看看