内置函数

Posted 凌零聆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内置函数相关的知识,希望对你有一定的参考价值。

数值函数:
    1、四舍五入函数round() from dual:一行一列组成
    select round(23.4) from dual;--默认不写m表示m为0
    select round(23.45,1) from dual;--1表示保留小数点后一位,那么是小数点的第二位四舍五入
    select round(23.45,-1) from dual;---1表示小数点前一位四舍五入取整,前一位是3四舍五入为20
    
    2、取整函数:
    select ceil(23.45),floor(23.45) from dual;
    
    3、常用计算:
    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;
    4、三角函数:
    sin(n),asin(n):n代表弧度
    select sin(3.14) from dual;
    cos(n),acos(n);
    
字符函数:
    1、大小写转换函数:upper(char),lower(char),initcap(char),把首字母转为大写
        select upper(abcde),lower(ADe),initcap(asd) from dual;
    2、获取子字符串函数:substr(char,[m[n]]),n如果省略代表从m截取到字符串的末尾
            m为0表示从字符串的首字母开始截取
            m为负数表示从字符串的尾部开始截取
        select substr(abcde,2,3);substr(abcde,2),substr(abcde,-2,1) from dual;
    3、获取字符串长度的函数:length(char)
        select length(abc ) from dual;
    4、字符串连接函数:concat(char1,char2);与||操作符的作用一样
        select concat(ab,cd) from dual;
        select ab ||cd from dual;
    5、去除子串函数:trim(c2 from c1),c2是一个字符,c1是字符串
        select trim(c from cdccec) from dual;--dcce,去除左右2边是c开始的字符
        select trim(c from ccdd) from dual;--dd
        ltrim(c1[,c2]);c1是字符串,c2是字符,从头部去除一个字符
        rtrim(c1[,c2]):
        trim(c1):代表去除左右2边的空格
        ltrim(c1):只有一个参数的话代表去除左边的空格
        rtrim(c1):只有一个参数的话代表去除右边的空格
        
    7、替换函数replace()    
        select replace(abcde,a,A)from dual
        
        select replace(abcde,a)from dual;--替换为空格
        select replace(abcde,ab,A) from dual;
日期函数:
    系统时间函数:SYSDATE  默认格式DD-MM-YY(日月年)
        ADD_MONTHS(date,i):select add_months(sysdate,3),add_months(sysdate,-3) from dual;
        NEXT_DAY(date,char):select next_day(sysdate,星期一) from dual;
        LAST_DAY(char):select last_day(sysdate) from dual;
        MONTHS_BETWEEN(char1,char2):计算2个日期之间间隔的月份
        select months_between(20-5月-1510-1月-15) from dual;
        
        
    日期操作函数:
        获取年份、月份、日期、小时
        提取指定日期部分的函数
        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:22:22) from dual;
转换函数:
    日期转换为字符的函数
        TO_CHAR(date[,fmt[,params]]):date:将要转换的日期、fmt:转换的格式、params:日期的语言
        默认是DD-MM-YY
        select to_char(sysdate,YYYY-MM-DD HH24:MI:SS) FROM DUAL;//默认最后一个参数不写
        
    字符转换为日期的函数
        TO_DATE(char[,fmt[,params]]):
        select to_date(2015-05-22,YYYY-MM-DD) FROM DUAL;
        //注意:to_date()按照系统默认的格式显示日期
    数字转换为字符的函数
        select to_char(12345.678,$99,999.999) from dual;
        
    字符转换为数字的函数
        TO_NUMBER(char[parms]);
        select to_number($1,000,$9999) from dual;

  SQL中的单记录函数

    1.ASCII返回与指定的字符对应的十进制数;

    SQL>select ascii(‘A‘) A,ascii(‘a‘) a,ascii(‘0‘) zero,ascii(‘ ‘) space from dual;

    A        A     ZERO    SPACE

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

    65       97       48       32

    2.CHR给出整数,返回对应的字符;

    SQL>select chr(54740) zhao,chr(65) chr65 from dual;

    ZH C

    -- -

    赵 A

    3.CONCAT连接两个字符串;

    SQL>select concat(‘010-‘,‘88888888‘)||‘转23‘ 高乾竞电话 from dual;

    高乾竞电话

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

    010-88888888转23

    4.INITCAP返回字符串并将字符串的第一个字母变为大写;

    SQL>select initcap(‘smith‘) upp from dual;

    UPP

    -----

    Smith

    5.INSTR(C1,C2,I,J)在一个字符串中搜索指定的字符,返回发现指定的字符的位置;

    C1   被搜索的字符串

    C2   希望搜索的字符串

    I    搜索的开始位置,默认为1

    J    出现的位置,默认为1

    SQL>select instr(‘oracletraning‘,‘ra‘,1,2) instring from dual;

    INSTRING

    ---------

    9

    6.LENGTH返回字符串的长度;

    SQL>select name,length(name),addr,length(addr),sal,length(to_char(sal)) from .nchar_tst;

    NAME  LENGTH(NAME) ADDR            LENGTH(ADDR)      SAL LENGTH(TO_CHAR(SAL))

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

    高乾竞           3 北京市海锭区               6  9999.99                   7

    7.LOWER返回字符串,并将所有的字符小写

    SQL>select lower(‘AaBbCcDd‘)AaBbCcDd from dual;

    AABBCCDD

    --------

    aabbclearcase/" target="_blank" >ccdd

    8.UPPER返回字符串,并将所有的字符大写

    SQL>select upper(‘AaBbCcDd‘) upper from dual;

    UPPER

    --------

    AABBCCDD

    9.RPAD和LPAD(粘贴字符)

    RPAD 在列的右边粘贴字符

    LPAD 在列的左边粘贴字符

    SQL>select lpad(rpad(‘gao‘,10,‘*‘),17,‘*‘)from dual;

    LPAD(RPAD(‘GAO‘,1

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

    *******gao*******

    不够字符则用*来填满

    10.LTRIM和RTRIM

    LTRIM 删除左边出现的字符串

    RTRIM 删除右边出现的字符串

    SQL>select ltrim(rtrim(‘  gao qian jing  ‘,‘ ‘),‘ ‘) from dual;

    LTRIM(RTRIM(‘

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

    gao qian jing

    11.SUBSTR(string,start,count)

    取子字符串,从start开始,取count个

    SQL>select substr(‘13088888888‘,3,8) from dual;

    SUBSTR(‘

    --------

    08888888

    12.REPLACE(‘string‘,‘s1‘,‘s2‘)

    string  希望被替换的字符或变量

    s1      被替换的字符串

    s2      要替换的字符串

    SQL>select replace(‘he love you‘,‘he‘,‘i‘) from dual;

    REPLACE(‘HELOVEYOU‘,‘HE‘,‘I‘)

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

    i love you

    13.SOUNDEX返回一个与给定的字符串读音相同的字符串

    SQL>create table table1(xm varchar(8));

    SQL>insert into table1 values(‘weather‘);

    SQL>insert into table1 values(‘wether‘);

    SQL>insert into table1 values(‘gao‘);

    SQL>select xm from table1 where soundex(xm)=soundex(‘weather‘);

    XM

    --------

    weather

    wether

    14.TRIM(‘s‘ from ‘string‘)

    LEADING  剪掉前面的字符

    TRAILING 剪掉后面的字符

    如果不指定,默认为空格符

    15.ABS返回指定值的绝对值

    SQL>select abs(100),abs(-100) from dual;

    ABS(100) ABS(-100)

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

    100      100

    16.ACOS给出反余弦的值

    SQL>select acos(-1) from dual;

    ACOS(-1)

    ---------

    3.1415927

    17.ASIN给出反正弦的值

    SQL>select asin(0.5) from dual;

    ASIN(0.5)

    ---------

    .52359878

    18.ATAN返回一个数字的反正切值

    SQL>select atan(1) from dual;

    ATAN(1)

    ---------

    .78539816

    19.CEIL返回大于或等于给出数字的最小整数

    SQL>select ceil(3.1415927) from dual;

    CEIL(3.1415927)

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

    4

    20.COS返回一个给定数字的余弦

    SQL>select cos(-3.1415927) from dual;

    COS(-3.1415927)

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

    -1

    21.COSH返回一个数字反余弦值

    SQL>select cosh(20) from dual;

    COSH(20)

    ---------

    242582598

    22.EXP返回一个数字e的n次方根

    SQL>select exp(2),exp(1) from dual;

    EXP(2)   EXP(1)

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

    7.3890561 2.7182818

    23.FLOOR对给定的数字取整数

    SQL>select floor(2345.67) from dual;

    FLOOR(2345.67)

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

    2345

    24.LN返回一个数字的对数值

    SQL>select ln(1),ln(2),ln(2.7182818) from dual;

    LN(1)    LN(2) LN(2.7182818)

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

    0 .69314718    .99999999

    25.LOG(n1,n2)返回一个以n1为底n2的对数

    SQL>select log(2,1),log(2,4) from dual;

    LOG(2,1) LOG(2,4)

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

    0        2

以上是关于内置函数的主要内容,如果未能解决你的问题,请参考以下文章

SQL内置函数

oracle数据库函数大全

oracle函数大全

[转]ORACLE函数大全

ThinkPHP系统内置单字母函数函数

是否有内置函数可以跨所有记录获取数组字段中的所有唯一值?