问答详情
源自:1-1 Oracle数据库开发利器之函数概述

函数的分类

老师,你好 我想问下在oracle当中,函数的分类是什么样的?以及具体包括什么函数呢?


提问者:qq_Sunshinegirl_53442984 2016-06-02 20:14

个回答

  • 慕九州6354270
    2022-08-26 10:16:27

    内置函数,也就是oracle给预先定义好的函数,可以由我们直接来使用。

    自定义函数,是我们根据自己的需求自行编写的函数,供我们使用

  • Mr低調3434974
    2016-06-04 10:24:19

    函数分类

    内置函数:数值函数、字符函数、日期函数、转换函数

    1、数值函数

    (1)、四舍五入

    round(n,m)

    省略m:默认为:0

    m>0:小数点后m位

    m<0:小数点前m位

    注意:oracle中不能直接使用函数,必须包含一个目标表dual,即select 函数 from  dual;   (dual作为目标表)

    如:select round(23.4),round(23.45,1),round(23.45,-1) from dual;

    结果:23  23.5  20

    (2)、取整函数

    ceil(n):--取最大值

    floor(n):--取最小值

    如:select ceil(23.45),floor(23.45) from dual;

    结果:24 23

    (3)、常用计算

    1)取绝对值:abs(n)

    如:select abs(23.45),abs(-23) from dual;

    结果:23.45 23

    2)取余数:mod(m,n)

    如果m和n中有一个为null值,则结果为null

    如:select mod(5,2),mod(5,null) from dual;

    结果:1 

    3)数值的n次幂:power(m,n)

    如:23用power(2,3)表示,结果8

    Select power(2,3),power(null,2) from dual;

    结果:8、有null值,则结果也为null

    4)平方根:sqrt(n)

    如:Select sqrt(16),sqrt(null) from dual;

    结果:4、有null值,则结果也为null

    (4)、三角函数

    sin(n) 、asin(n) 反正弦

    cos(n)、acos(n) 反余弦

    tan(n)、atan(n) 反真切

    例:select sin(3.14159265359/6) from dual;

    结果:0.5

    2.字符函数

    (1)、大小写转换函数
    1)upper(chars):表示全部转大写

    2)lower(chars):表示全部转小写

    3)initcap(chars):表示把首字母大写,后面的字符全部小写

    (2)、获取子字符串函数

    substr(char,[m,n]) m表示取子串的开始位置 n表示截取子串的位数

    例:select substr('abcde',2,3) ,substr('abcde',2),substr('abcde',-2,1) from dual;

    结果为: bcd bcde d

    注意:m=0表示从首字母开始截取,n可以省略表示从m的位置截取到字符串末尾;

    如果m=0且省略n那么结果仍为源字符串;

    如果m为负数表示从字符串的尾部开始截取

    select substr('abcdefg',-5,4) from dual;

    结果:cdef

    3、日期函数

    1)、系统函数

    sysdate

    默认格式:DD-MON-RR(日月年)

    如:Select sysdate from dual;

    2)、日期操作

    ①add_months(date,i)

    如:select add_months(sysdate,3),add_months(sysdate,-3) from dual;

    结果:04-9月 -16      04-3月 -16

    ②next_day(date,char)

    如:select next_day(sysdate,'星期日') from dual;;

    结果:显示下一个的周日的日期 05-6月 -16

    ③last_day(date)

      如:select last_day(sysdate) from dual;

      结果:查看当月最后一天 30-6月 -16

    ④months——between(date1,date2)

      如:select months_between(sysdate,'4-8月-16') from dual;

    结果:查看两个日期之间相隔的月份,返回值是小数  -2

    PS:要获取两个日期相隔多少天,可以用两个日期直接相减得到多少天。

    ⑤extract(date from datetime)--获取时间戳

    如:select extract(year from sysdate) from dual;(month或者day)

    如果想得到时分秒,例子如下:(用timestamp)

    select extract(hour from timestamp '2016-10-1  9:56:4') from dual;

    (minute或second)

        4、转换函数

         1)、日期转换成字符的函数

    to_char(date,fmt,params)

    参数说明:

    date:将要转换的日期

    fmt:转换的格式

    params:日期的语言

    默认格式:DD-MON-RR(天月年)

    YY YYYY YEAR(年)

    MM MONTH(月)

    DD  DAY(天)

    HH24  HH12(24、12制)

    MI(分) SS(秒)

    如:select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;

    结果:2016-06-04 10:03:50

    2)、字符转换成日期的函数

    to_date(char,fmt,params)

    params:用于指定日期的语言(一般不写)

    如:select to_date('2016-05-22','YYYY-MM-DD') from dual;

    注意:to_date() 按照系统默认格式显示日期

    3)、数字转换成字符的函数

    to_char(number,fmt)

    9:显示数字并忽略前面的0

    0:显示数字,位数不足,用0补齐

    .或D:显示小数点

    ,或G:显示千位符

    $:美元符号

    S:加正负号(前后都可以,但不可同时加)

    如:select to_char(5123.456,'S$99,999.99')from dual;

    结果:+$5,123.46

    4)、字符转换成数字的函数

    to_number(char,fmt)

    fmt是转换的格式,可以省略

    如:select to_number('$2,000','$9999') from dual;

    结果:2000