美文网首页
Oracle-常用函数

Oracle-常用函数

作者: TESTME | 来源:发表于2018-09-04 22:06 被阅读0次

    1.to_char:将时间或数字转为字符串

    to_char处理数字:TO_CHAR(number,'格式')

    TO_CHAR(salary,'$99,999.99')
    TO_CHAR(200,L99G999D99MI)  //¥200.00
    

    to_char处理日期:TO_CHAR(date,'格式')

    TO_CHAR(date,'yyyy-mm-dd hh24:mi:ss')
    

    查询六月份出生的学生:

    SELECT sname,birthday
    FROM student
    WHERE TO_CHAR(birthday,'mm') = 6
    

    2.TO_NUMBER:TO_NUMBER函数()是Oracle中常用的类型转换函数之一,主要是将字符串转换为数值型的格式,与TO_CHAR()函数的作用正好相反。

    用法:To_number(varchar2 or char,’format model’)

    To_number函数中也有很多预定义的固定格式:

    格式值 含义
    9 代表一个数字
    0 强迫0显示
    $ 显示美元符号
    L 强制显示一个当地的货币符号
    . 显示一个小数点
    , 显示一个千位分隔符号
    SELECT TO_NUMBER('RMB46.3560','L99999.0000') FROM dual    //46.356
    

    注意:有的时候你会发现,使用了TO_NUMBER()函数并且语法正确,但是Oracle却报“invalid number”的错误,而你在一遍又一遍认认真真检查并确定语句无误之后大呼惊奇,以为TO_NUMBER()函数还有什么可能不知道的用法。其实这很可能是你所查询的数据出现了问题,而非SQL。使用TO_NUMBER()函数的时候,一定要确保所转换字段是可转换为数字的,比如字符串“20151008”是可以转换为数字20151008的,但是字符串“2015-10-08”不可以。如果你的字段中包含了字符串“2015-10-08”,而你还直接使用了TO_NUMBER()函数进行操作的话就会报“invalid number”的错。

    3.TO_DATE:转化为时间格式

    年:

    格式值 含义
    yy 显示值:18
    yyy 显示值:018
    yyyy 显示值:2018

    月:

    格式值 含义
    mm 显示值:11
    mon 显示值:11月,若是英文版,显示nov
    month 显示值:11月,若是英文版,显示november

    日:

    格式值 含义
    dd 当月第几天 显示值:02
    ddd 当年第几天 显示值:02
    dy 当周第几天简写 显示值:星期五,若是英文版,显示fri
    day 当周第几天简写 显示值:星期五,若是英文版,显示friday

    小时:

    格式值 含义
    hh 12小时进制 显示值:01
    hh24 24小时进制 显示值:13

    分:

    格式值 含义
    mi 60进制 显示值:06

    秒:

    格式值 含义
    ss 60进制 显示值:06

    其它:

    格式值 含义
    Q 季度 显示值:2
    WW 当年第几周 显示值:52
    W 当月第几周 显示值:2
    TO_DATE('2018-08-30 08:25:45','yyyy-mm-dd hh24:mi:ss')
    

    4.MOD:求余

    MOD(n1,n2),返回n1除以n2的余数,n2=0时返回n1

    SELECT MOD(43,5) FROM table  //3
    

    5.ROUND:四舍五入

    ROUND(n1,[,n2]),n2大于 0,则四舍五入到指定的小数位,n2等于 0或缺省,则四舍五入到最接近的整数,n2小于 0,则在小数点左侧进行四舍五入

    ROUND(3.1415926,2)      //3.14;
    ROUND(3.1415926,3)      //3.142;
    SELECT ROUND(193,-2) FROM dual;      //200
    SELECT ROUND(193,-1) FROM dual;      //190
    SELECT ROUND(193,-3) FROM dual;      //0
    

    6.TRUNC:截取

    TRUNC(n1,[,n2]),n2大于 0,则向后截取,n2等于 0或缺省,则取整数,n2小于 0,则向前截取

    SELECT TRUNC(123.458) FROM dual;    //123
    SELECT TRUNC(123.458, 0) FROM dual;  //123
    SELECT TRUNC(123.458, 1) FROM dual;  //123.4
    SELECT TRUNC(123.458, -1) FROM dual; //120
    SELECT TRUNC(123.458, -4) FROM dual;  //0
    SELECT TRUNC(123.458, 4) FROM dual;  //123.458
    SELECT TRUNC(123) FROM dual;  //123
    SELECT TRUNC(123, 1) FROM dual;  //123
    SELECT TRUNC(123, -1) FROM dual;  //120
    

    7.TRIM:出去首位空格

    TRIM:用来移除掉一个字串中的字头或字尾。删除字符串首尾的空白(可以首尾一起,也可以指定首或尾,取决于控制参数),但会保留字符串内部作为词与词之间分隔的空格

    LTRIM(字串):将字串左边的空格移除。

    RTRIM(字串): 将字串右边的空格移除。

    TRIM(字串): 将字串首尾两端的空格移除,作用等于RTRIM和LTRIM两个函数共同的结果。

    ALLTRIM(字串):将字串左右边两边的空格移除。

    SELECT RTRIM('    aaa111  bbb  ccc     ') FROM dual;
    

    注意:字符串左右的空格真的可以全部都去掉吗?不见得。如果你的字符串两侧带有全角空格,你就会惊奇的发现,全角空格完全去不掉!包括Java中trim()方法,对于字符串前后的全角空格也是无能为力。那么如何解决呢?

    去除字符串左右 / 中指定字符(进阶用法)

    去除空格仅仅是这三个函数的“默认行为”,事实上,这三个函数还可以接收其他的参数来完成在指定字符串左右 / 中去除字符。

    TRIM( leading | trailing | both string1 FROM string2):从string2中去除左侧 | 右侧 | 左右两侧(默认是both,即左右侧都去掉)的string1字符,注意,string1只能是单个字符。

    SELECT TRIM(leading  '  '  FROM  '    aaa  bbb  ccc   ') FROM dual;
    

    LTRIM(string1,string2),RTRIM(string1,string2):从字符串string1左侧(右侧)开始去除与string2字符集合中单个字符匹配的字符,直到在string1中遇上某个字符,该字符不在string2字符集合中。

    oracle中的这两个函数中的第二个参数,可以是多个字符组成的“字符集合”,为什么说是“字符集合”而不是“字符串”(虽然严格意义上讲并没有字符集合这个概念),因为在以string2为基础对string1做字符去除的时候,string2并不是作为一个字符串那样的整体来与string1匹配的,而是单个单个字符的匹配。比如string1='abccba',string2='abc',如果string2作为一个整体来匹配,显然不管是用ltrim还是rtrim函数,对string1操作之后返回的结果应该是'cba',但实际上不是,返回的是一个空串!

    8.REPLACE:替换

    REPLACE(str1,str2,[,str3]):str3替换str1中出现的所有str2,返回新的字符串,如果有某个参数为NULL,此函数返回NULL
    该函数可以多次替换,只要str1中还有str2存在,最后都被替换成str3
    若str3为空,则删除str2

    REPLACE('hello world,'h','H')   //Hello world
    
    REPLACE('abca','a')    //bc
    

    9.SYSDATE:返回数据库所在操作系统上的时间

    SELECT SYSDATE,CURRENT_DATE FROM table
    

    10.其他

    函数1 作用
    upper 转大写
    lower 转小写
    substr 取子串
    length 长度
    initcap 首字母大写

    相关文章

      网友评论

          本文标题:Oracle-常用函数

          本文链接:https://www.haomeiwen.com/subject/idanwftx.html