• Oracle函数


    字符函数

    大小写控制函数:

    lower():全部小写

    upper():全部大写

    initcap():首字母大写

    字符控制函数:

    1.concat
    eg:

    select concat('happy','boy')from dual;

    CONCAT('

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

    happyboy

    )

    2.substr
    substr('要截取的字符串',起始位置)
    说明:位置从1开始

    --substr

    select substr ('HappyBoy',5)from dual;

    SUBS

    ------

    yBoy

    substr('要截取的字符,起始位置,取几个字符)

    --substr

    select substr('HappyBoy',2,3)from dual;

    SUB

    ------

    app

    3.length('字符串'):字符个数统计

    lengthb('字符串'):字节个数统计

    select length('快乐') 字符数,lengthb('快乐')as 字节数 from dual

                 字符数       字节数

    --------------2  -----------4

    4.instr('大字符串','小字符串')返回小字符串在大字符串中出现的位置

    5.lpad()和rpad()


    6.trim()



    日期函数:

    1. 日期和字符转换函数用法(to_date,to_char)
             
    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   //日期转化为字符串   
    select to_char(sysdate,'yyyy') as nowYear   from dual;   //获取时间的年   
    select to_char(sysdate,'mm')    as nowMonth from dual;   //获取时间的月   
    select to_char(sysdate,'dd')    as nowDay    from dual;   //获取时间的日   
    select to_char(sysdate,'hh24') as nowHour   from dual;   //获取时间的时   
    select to_char(sysdate,'mi')    as nowMinute from dual;   //获取时间的分   
    select to_char(sysdate,'ss')    as nowSecond from dual;   //获取时间的秒

        
    select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')    from dual//

    2.      
        select to_char( to_date(222,'J'),'Jsp') from dual      
        
        显示Two Hundred Twenty-Two    

    3.求某天是星期几      
       select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;      
       星期一      
       select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;      
       monday      
       设置日期语言      
       ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';      
       也可以这样      
       TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')    

    4. 两个日期间的天数      
        select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;    

    5. 时间为null的用法      
       select id, active_date from table1      
       UNION      
       select 1, TO_DATE(null) from dual;      
       
       注意要用TO_DATE(null)    

    6.月份差   
       a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')      
       那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。      
       所以,当时间需要精确的时候,觉得to_char还是必要的 
          
    7. 日期格式冲突问题      
        输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: '01-Jan-01'      
        alter system set NLS_DATE_LANGUAGE = American      
        alter session set NLS_DATE_LANGUAGE = American      
        或者在to_date中写      
        select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;      
        注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,      
        可查看      
        select * from nls_session_parameters      
        select * from V$NLS_PARAMETERS    

    8.      
       select count(*)      
       from ( select rownum-1 rnum      
           from all_objects      
           where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-      
           02-01','yyyy-mm-dd')+1      
          )      
       where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )      
            not in ( '1', '7' )      
       
       查找2002-02-28至2002-02-01间除星期一和七的天数      
       在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒).    

    9. 查找月份     
        select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;      
        1      
       select months_between(to_date('02-01-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;      
        1.03225806451613 
           

    数字函数

    1、Round:四舍五入

    Round(45.926,2)→45.93

    2、Trunc:截断

    Trunc(45.926,2)→45.92

    3、Mod:求余

    Mod(1600,300)→100

    dual是一个"伪表",可以用来测试函数和表达式。

    Round(45.923,0)保留整数位,结果是46。

    Round(45.923,-1)取整数位的第二位。就是取十位,结果是50。

    Round(45.923,-2)取整数位的第三位。就是取百位,结果为0。

    5.Round():四舍五入
    select round(12.45,1) from dual,

    decode函数

    复制代码
    --decode函数
      select ename,empno,
          decode (ename,'SMITH',1,
          'ALLEN',2,
          'WARD',3,
          'JONES',4) "Location"
          from emp
          where empno<7600
          order by empno,"Location"
    复制代码

    效果:

    通用函数


  • 相关阅读:
    css实现垂直居中
    js验证输入框
    textarea统计字数
    ajax提交form表单
    JS中的正则表达式
    《遮蔽层的隐藏块》
    2016各大互联网公司前端面试题汇总
    JQ 添加节点和插入节点的方法总结
    [原]CentOS7部署osm2pgsql
    [原]CentOS7部署PostGis
  • 原文地址:https://www.cnblogs.com/Smile-123/p/5811182.html
Copyright © 2020-2023  润新知