zoukankan      html  css  js  c++  java
  • Oracle初级函数的使用

    --1.字符函数
    --UPPER(string|column) 可以将字符转成大写
    select upper('helloword') from dual;
    select upper(ename) from emp;

    --LOWER(string|column) 将指定的字符串转换成小写
    select lower('HELLOWORD') from dual;
    select lower(ename) from emp;

    --INITCAP(string|column) 将单词的第一个字母大写
    select initcap ('hello word') from dual;
    --员工姓名首字母大写,只要首字母大写,其他都变成小写
    select initcap(ename) from emp;

    --LENGTH(string|column)计算字符串的长度
    select length('helloword') from dual;
    select ename ,length(ename) 长度 from emp;
    --查询姓名长度等于5的员工
    select ename,length(ename) from emp where length(ename) = 5;

    --REPLACE(string|column)替换字符串
    select replace(ename,'A','_') 替换后 from emp;

    -- CONCAT(string1,String2)拼接字符串 || --> 拼接符号 只能有两个参数
    select concat('hello','word') 拼接后 from dual;

    --SUBSTR(string,start,length)截取字符串。【闭区间】
    -- 第一个参数为要截取的内容,Oracle中第一个字符序列是(0 或者 1),第二个参数是截取开始的位置,第三个参数是截取字符串的长度
    --如果第二个参数为负数的话,那么0和1就不一样了,因为-0也相当于0,-1的话就是从最后一个来时数,然后往后面数第三个参数的长度
    select ename,substr(ename,-0,3) from emp;
    select ename,substr(ename,0,3) from emp;
    select ename,substr(ename,-1,3) from emp;
    select ename,substr(ename,1,3) from emp;
    select ename,substr(ename,-3,3) from emp;
    select ename,substr(ename,3,3) from emp;
    -- 若只有两个参数,第一个参数为截取的字段,第二个参数为开始的位置,一直截取到末尾,也可以是负数,表示从后面开始往后数截取这个参数长度的字符
    select ename,substr(ename,-5) from emp;

    ----------------------------------------------------------------------------------------------------------------
    --2.数值函数
    --ROUND()对数字进行四舍五入
    --四舍五入,只有一个数字的参数,表示保留到个位
    select round(1024.633),round(-1024.633) from dual;
    --可以传两个参数,正数表示从小数点向右N位进行四舍五入,如果是负数,表示从小数点向左N位进行四舍五入
    select round(1024.633,-1),round(1024.633,2) from dual;

    --TRUNC()对数字进行截取(与ROUND作用差不多,唯一区别是不进行四舍五入操作)
    select trunc(1024.633),trunc(-1024.633) from dual;
    select trunc(1024.663,-1),trunc(1024.663,1) from dual;

    --MOD(number1,number2)求模运算
    --运算符只支持 +-*/ ,取模要用函数mod()
    select mod(6,4) from dual;

    ----------------------------------------------------------------------------------------------------------------
    --3.日期函数
    --获得当前时间用sysdate
    select sysdate from dual;

    --日期加减
    --当前日期之后
    select sysdate + 3,sysdate + 300 from dual;
    --当前日期之前
    select sysdate - 3,sysdate - 300 from dual;
    --总结:日期-数字=日期 日期+数字=日期 日期-日期=数字(天数)

    --查询所有员工入职的天数
    select ename,sysdate - hiredate days from emp;
    --查询所有员工入职的星期数
    select ename,(sysdate - hiredate)/7 weeks from emp;

    --LAST_DAY()计算指定日期所在月的最后一天
    select last_day(sysdate) from dual;

    --NEXT_DAY()求下一个指定星期X的日期
    --计算下一个星期三是几号
    select next_day(sysdate,'星期三') from dual;

    --ADD_MONTHS()在指定日期上加上相应的月数 --> 两个参数,第一个是指定日期,第二个是月数
    select add_months(sysdate,4) from dual;

    --MONTHS_BETWEEN()求出指定日期范围的月数
    --查询所有员工的入职月数 MONTHS_BETWEEN(date1,date2)计算规则是:date1-date2
    select ename,trunc(months_between(sysdate,hiredate)) 月数 from emp;

    --------------------------------------------------------------------------------------------------
    --4.转换函数
    --TO_CHAR() 日期或数字转换成字符串
    select to_char(sysdate,'yyyy-mm-dd') from dual;
    --yyyy - 年 mm - 月 dd - 天
    select to_char(sysdate,'yyyy-mm-dd'),to_char(sysdate,'yyyy'),to_char(sysdate,'mm'),to_char(sysdate,'dd') from dual;
    --去掉0 'fmyyyy-mm-dd'
    select to_char(sysdate,'fmyyyy-mm-dd') from dual;
    --hh24 - 24小时制(hh12 - 12小时制) mi - 分 ss - 秒
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
    select to_char(sysdate,'yyyy-mm-dd hh12:mi:ss') from dual;
    --后面是格式显示,9表示普通数字 $表示美元符号 L表示本地local钱的符号 后面两个只能和9一起用
    --从后面开始排列,就是先排4个8,再拍3个...直到排完 也是从后面开始显示的
    SELECT TO_CHAR(88888888888,'999,999,999,999,9999') FROM dual;
    SELECT TO_CHAR(88888888888,'L999,999,999,999,999') FROM dual;

    --TO_NUMBER() 将数字形式的字符串转换成数值
    --两个值相加
    select 123 + '456' from dual;
    select to_number('123') + 456 from dual;

    --TO_DATE() 将字符串转换成日期
    select to_date('1993-12-09','yyyy-mm-dd') from dual;
    select to_char(to_date('1993-12-09','yyyy-mm-dd'),'yyyy-mm-dd') from dual;

    -------------------------------------------------------------------------------------------------
    --4.通用函数
    --NVL函数
    --查询出所有员工的年薪
    select ename,job,hiredate,(sal+comm)*12 income from emp;
    --错误原因:因为奖金为null的值参与了运算,得到是一个不可预计的结果。解决上面空值错误可以使用oracle提供的NVL函数
    --NVL(value1,value2):表示的意思就是如果valu1为值null,则计算时用value2替换参与运算
    select ename,job,hiredate,(sal+nvl(comm,0))*12 income from emp;

    --DECODE函数 CASE 多条件多数值判断
    --DECODE(表达式,匹配条件1,value1,匹配条件2,value2…….default)
    --查询全部雇员的职位:要求显示CLERK: 业务员 SALESMAN:销售人员 MANAGER:经理 ANALYST:分析员 PRESIDENT:总裁
    select ename,decode(job,'CLERK','业务员','SALESMAN','销售人员','MANAGER','经理','ANALYST','分析员','PRESIDENT','总裁') 职位 from emp;

  • 相关阅读:
    子集和的另外一个问题
    LCS
    表达式求值
    Singleton in java
    自绘ListBox的两种效果
    动态创建、压缩Access数据库(*.MDB)
    C# 中用stopwatch测试代码运行时间
    MVC学习笔记之数据传递
    ATM应用实现
    html的基本语法
  • 原文地址:https://www.cnblogs.com/tyzl/p/5536792.html
Copyright © 2011-2022 走看看