zoukankan      html  css  js  c++  java
  • Oracle中的单值函数

    Oracle的函数

                  Oracle函数可以分为单值函数和分组函数两大类,单值函数又分为字符函数、日期和时间函数、数字函数、转换函数和混合函数:分组函数右count、max、min、avg、sum,都可以和group by 搭配使用。

            

             单值函数

    1、  字符函数

    l  字符串连接函数

             问题:把员工的姓名和工作类型连在一起使用"-"分隔

             函数:concat(字符串1,字符串2)

    select concat(concat(ename,'-'),job) from   emp;

                  扩展点:字符串连接符号 " || "

    select ename || '-' || job from emp;

             

    l  右对齐函数

             问题:将员工的姓名右对齐显示

             函数:lpad(待处理的字符串,预留位置,填充符号)  

    select lpad(ename,10,' ') from emp;

            

    l  字符串截取函数

             问题:截取员工姓名的前3个字符和字符4以后的内容显示

             函数:substr(字符串,起始位置,截取的个数)

                   substr(字符串,起始位置)  --默认截取到最后

    select ename,   substr(ename,1,3),substr(ename,4) from emp;

            

    l  字符查找函数

             问题:字母'T'在员工姓名中第一次出现和第二次出现的位置

             函数:instr(字符串,查找的字符,查找的起始位置,出现的次数)

    select ename, instr(ename,'T',1,1) as A,   instr(ename,'T',1,2) as B from emp;

             扩展:员工姓名中不含M的员工

    select ename from emp where   instr(ename,'M',1,1)=0

             

    l  首字母大写函数

             问题:员工姓名首字母大写显示

             函数:initcap(字符串)

    select initcap(ename) from emp;

            

    l  小/大写函数

             问题:将员工姓名大写转换

             函数:upper(字符串)/lower(字符串)

    select upper(ename) , lower(ename) from   emp;

            

    l  字符串替换函数

             问题:将姓名中的M全部替换成'*'显示

             函数:replace(字符串,带替换的字符,替换后的字符)

    select replace(ename,'M','*') from emp;

            

    l  字符串长度函数

             问题:找出姓名长度大于5的员工姓名

             函数:length(字符串)

    select ename from emp where   length(ename)>5;

    2、  日期函数

    l  系统时间

                      问题:返回系统的当前时间

                      函数:sysdate

                      说明:1、函数没有“( )”

             2、dual 是一张无意义的表,在Oracle专门用于函数的测试

    select sysdate from dual;

        

                      使用一个to_char,转换函数类型

                      将时间类型转成字符类型

                      函数:to_char(时间数据,格式)

    select to_char(sysdate,'yyyy-mm-dd   hh:mi:ss') from dual;

                                        

                      格式:yyyy 年

    mm 月

    dd 日期

    d 一周中的第几天

    ddd 一年中的第几天

    day 周

    month 月份

    hh24 24小时制

    l  日期修改函数

                      问题:将系统时间添加2个月显示

                      函数:add_months(时间数据,添加的月份)

    select add_months(sysdate,2) from dual;

                                 

    l  日期差函数

                      问题:显示员工入职时间的月份统计

                      函数:months_between(时间1,时间2)

    select   ename,hiredate,months_between(sysdate,hiredate) from emp;

                   

    3、  转换函数

    l  to_char()见上例

    l  时间转换函数

             函数:to_date(时间数据字符串,格式)

    insert into 表名 values(to_date('2009-12-12','yyyy-mm-dd'));

                     

      案例1:查询在12年前参加工作的员工

    Select   ename,hiredate from emp where months_between(sysdate,hiredate)>144

      

      案例2:查询在当月倒数第三天参加工作的员工

            函数:last_day(时间数据)  -> 返回该日期所在月份的最后一天

    select ename,hiredate from emp where   last_day(hiredate)-2 = hiredate;

             

      案例3:查询每个员工的工作天数

    格式:时间1-时间2  -->  返回相差的天数

    select ename,hiredate,sysdate-hiredate   from emp;

            

    4、  数学函数

    l  round(数字) 四舍五入

      案例:按每月30天计算员工的每日薪水,要求计算结果四舍五入到小数点后2位

                            函数:round(数字,精度)

    select ename,round(sal/30,2) from emp;

                    

    l  trunc(数字) 取整函数->只保留整数部分

      案例:查询员工工作了多少个月

    select ename,trunc(months_between(sysdate,hiredate)) from emp;

                    

    l  floor(数字) 向下取

                            floor(1.9)  -> 1

    l  ceil(数字) 向上取

                            ceil(1.1) -> 2     花费 

    l  abs(数字) 取绝对值函数

    l  mod(数字1,数字2) 取余函数

                            mod(5,4) -> 1

    l  power(数字,n次方)

                           power(2,4) -> 16

    作者:中软卓越天津ETC

  • 相关阅读:
    Dockerfile 指令 VOLUME 介绍
    Spring boot(4)-应用打包部署
    Docker Dockerfile详解
    poj-1045(数学不好怪我咯)
    poj-3185-开关问题
    poj-1163-The Triangle
    归并排序(Merge Sort)
    交换排序—快速排序(Quick Sort)
    交换排序—冒泡排序(Bubble Sort)
    选择排序—堆排序(Heap Sort) 没看明白,不解释
  • 原文地址:https://www.cnblogs.com/zretc/p/3242461.html
Copyright © 2011-2022 走看看