• Oracle学习笔记(六)


    八、函数
    1、函数的作用
    (1)方便数据的统计
    (2)处理查询结果,让数据显示更清楚
    2、函数分类(提供很多内置函数,也可自定义函数)
    (1)数值函数 平均值,四舍五入
    a、四舍五入
    表达式 round(n[,m])
    省略m:0 m>0:小数点后m位,m<0:小数点前m位
    n表示要进行四舍五入的值
    m表示保留小数点后几位或前几位

    例子:运用Oracle默认表dual,取整,保留一位小数,小数点前面的1位
    select round(23.4),round(23.45,1),round(23.4,-1) from dual;

    b、取整函数
    ceil(n)取整时最大值(上限)
    floor(n)取整时最小值(下限)
    事例:
    select ceil(23.45),floor(23.45) from dual;

    c、常用计算
    abs(n)取绝对值
    select abs(23.45),abs(-23),abs(0) from dual;

    mod(m,n)取余数(取模),如果m和n中有一个值为null值,则结果返回null值
    select mod(5,2) from dual;
    select mod(5,null) from dual;

    power(m,n) 表示返回m的n次幂
    select power(2,3),power(null,2) from dual;

    sqrt(n)求平方根
    select sqrt(16) from dual;

    d、三角函数
    sin(n)求正弦
    select sin(3.1415926/6) from dual;
    asin(n)求反正弦
    select asin(1) from dual;

    cos(n)余弦
    select cos(3.1415926/6) from dual;
    acos(n)反余弦
    select acos(1) from dual;

    tan(n)正切
    select tan(1) from dual;
    atan(n)反正切
    select atan(3.1415926/6) from dual;

    (2)字符函数(用的最多)大小写专函,替换
    a、大小写转换函数
    upper(char)小写转大写
    lower(char)大写转小写
    initcap(char)首字符转大写

    select upper('abcd'),lower('ADEd'),initcap('asd') from dual;

    用途:取出值时可以转换成大写小写

    b、获取子字符串函数
    substr(char,[m,[,n]])
    char源字符串
    m 取子串的开始位置
    n 截取子串的位数

    select substr('abcde',2,3) from dual;
    注意:
    n是可以省略的,当n省略时表示从m的位置截取到字符串末尾
    select substr('abcde',2) from dual;
    m为0,表示从字符串的首字母开始截取
    select substr('abcde',0) from dual;
    m为负数,表示从字符串的尾部开始截取
    select substr('abcde',-2,1) from dual;

    c、获取字符串长度函数
    length(char)获取长度,空格也算
    select length('acd ') from dual;

    d、字符串连接函数
    concat(char1,char2)两个字符连接,与||操作符的作用一样
    select conncat('ab','cd') from dual;
    select 'ab'||'cd' from dual;

    e、去除子串函数
    trim(c2 from c1) 从字符串c1中去除字符c2
    select trim('b' from 'abcde') from dual;
    ltrim(c1[,c2])从头部开始去除一个
    select ltrim('ababaaa','a') from dual;
    rtrim(c1[,c2])从尾部开始去除一个
    select rtrim('ababaaa','a') from dual;
    trim(c1)去除首位空格

    f、替换函数(可以替换多个字符)
    说明:
    replace(char,s_string[,r_string])
    select replace('abcde','a','A') from dual;
    省略r_string用空格替换
    select replace('abcde','a') from dual;

    替换ab替换成一个字符A
    select replace('abcde','ab','A') from dual;

    (3)日期函数
    a、系统时间
    sysdate
    默认格式:DD—MON-RR
    显示默认时间
    select sysdate from dual;

    b、日期操作
    add_months(date,i)
    返回在指定日期上添加的月份,i可以是任何整数,如何i是小数,则截取整数部分,如何i是负数,则相当于为原日期减去月份
    select add_months(sysdate,3),add_months(sysdate,-3) from dual;
    next_day(date,i)
    作用:
    如果char的值是'星期一',则返回date指定日期的下周一是哪天
    select next_day(sysdate,'星期一') from dual;
    last_day(date) 可以查看每个月的最后一天是几号
    select last_day(sysdate) from dual;
    months_between(date1,date2)表示两个日期之间相隔的月份
    select months_between('20-5月-16','10-1月-16') from dual;
    extract(date from datetime)
    select extract(year from sysdate) from dual;
    select extract(month from sysdate) from dual;
    select extract(day from sysdate) from dual;
    select extract(hour from timestamp '2015-10-1 17:25:13') from dual;

    (4)转换函数
    a、日期转换成字符的函数
    格式:
    to_char(date[,fmt[,params]])
    参数说明:
    date:将要转换的日期
    fmt:转换的格式
    params:日期的语言(通常可以buxie)
    格式定义:
    YY YYYY Year
    MM month
    DD day
    HH24 HH12
    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;

    b、字符转换成日期的函数
    格式:
    to_date(char[,fmt[,params]])
    参数解释:
    params:用于指定日期的语言(通常不写)
    事例:
    select to_date('2017-07-22','YYYY-MM-DD') from dual;
    注意:
    to_date()按照系统默认格式显示日期

    c、数字转换成字符的函数
    格式:
    to_char(number[,fmt])
    说明:
    9:显示数字并忽略前面的0
    0:显示数字,位数不足,用0补齐
    .或D:显示小数点
    ,或G:显示千位符
    $:美元符号
    S:加正负号(前后都可以)
    事例:
    select to_char(12345.678,'$99,999.999') from dual;
    没有小数点用的,号,会四舍五入
    select to_char(12345.678,'$99,999,999') from dual;
    前面加S
    select to_char(12345.678,'S99,999.999') from dual;

    d、字符转换成数字的函数
    格式:
    to_number(char[,fmt])
    说明:
    fmt:是转换的格式,可以省略
    事例:
    select to_number('$1,000','$9999') from dual;

    3、在查询中使用字符函数
    (1)将小写字母装换成大写
    a、在员工信息表查询出员工的生日(根据员工身份证号码得到员工生日)
    create table users(
    id varchar2(10),
    name varchar2(11),
    cardid varchar2(18),
    deptno varchar2(10),
    regdate date,
    age number(4,0)
    );

    insert into users values('1','zhubajie','12345619920505','01','12-7月-2017',null);
    查询:
    select substr(cardid,7,8) as 员工生日 from users;

    b、将部门号01全部替换成‘信息技术’
    select replace(deptno,'1','信息技术') as 信息技术 from users;

    (2)查询时间间隔
    a、取得员工入职的年份
    select extract(year from regdate) as 员工入职年份 from users;
    b、查询出5月份入职的员工信息
    insert into users values('3','沙僧','12345619920505','03','12-5月-2017',15);
    select * from users where extract(month from regdate)=5;
    (3)四舍五入
    a、将员工信息表中的年龄字段与10取余数
    insert into users values('2','zhubajie','12345619920505','02','12-7月-2017',15);
    select mod(age,10) from users;

    总结:
    1、四舍五入:ROUND(n[,m])
    2、取整:floor(n)
    3、绝对值:ABS(n)
    4、取余数:Mod(m.n)
    5、平方根:Sqrt(n)
    6、三角函数:sin(n)、asin(n)等
    7、数值函数
    8、字符函数
    9、日期函数:获取当前时间sysdate add_month last_day(date) month_between() extract(date from date)
    10、转换函数
    11、在查询语句中使用函数

  • 相关阅读:
    沮丧
    实例讲解《Microsoft AJAX Library》(1):DomElement类
    linux0.12系统调用
    关于中断
    dd写img
    linux系统中堆栈的使用方法
    浅析程序的装载
    SourceInsight3.5序列号
    区分进程的逻辑地址空间中段和cpu分段机制中段的概念
    32位计算机的4G可寻址空间
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/6418463.html
Copyright © 2020-2023  润新知