• Oracle常用函数


     /************** Oracle常用函数 ********************/

    SELECT AVG(T.ID) FROM TY_USER_SYS T 查询平均值
    COUNT() -- 返回行数
    FIRST() --SELECT * FROM TABLE1 WHERE ROWNUM <= 2 查询前2

    --类似于Mysql的limit,3层子查询嵌套是为了方便封装,让最基本的查询语句和分页的逻辑完全分离
    SELECT * FROM(
        SELECT SEA_SUB_T.*,ROWNUM SEA_RNO FROM (
            SELECT * FROM TY_USER_SYS
        )    SEA_SUB_T WHERE ROWNUM <= 4
    ) WHERE SEA_RNO >=2

    MAX() -- 返回最大值
    MIN() -- 返回最小值
    SUM() -- 返回总和


    SELECT UPPER('acc') FROM DUAL -- 将某个字段转换为大写
    SELECT LOWER('ABCD') FROM DUAL -- 将某个字段转换为小写
    SELECT LENGTH('abcde') FROM DUAL -- 返回某个文本字段的长度
    SELECT ROUND(3.54) FROM DUAL -- 对某个数值字段进行指定小数位数的四舍五入
    SELECT SYSDATE FROM DUAL; -- 返回当前的系统日期和时间
    SELECT SYSTIMESTAMP FROM DUAL; -- 返回当前的系统日期和时间

    /************** 字符串 ********************/

    SELECT SUBSTR('abcde', 1, 3) FROM DUAL 字符串截取1-3,1指的是字符串第一位;

    SELECT INSTR('小鸡快跑小鸡快跑', '小',2,2) FROM DUAL 字符串查索引
    格式一:instr( string1, string2 )/ instr(源字符串, 目标字符串)
    格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) / instr(源字符串, 目标字符串, 起始位置, 匹配序号)
    在string1中查找string2 ,从start_position开始检索(包含start_position),第nth_appearance(几)次出现string2,字符串只检索一遍。

    SELECT TRIM('    a ') FROM DUAL;--去除空格
    SELECT LTRIM('    a ') FROM DUAL;--去除空格
    SELECT RTRIM('    a ') FROM DUAL;--去除空格

    SELECT CONCAT('abc', 'def') FROM DUAL;--字符串连接
    SELECT 'abc'||'def'||'' FROM DUAL;--字符串连接

    SELECT  wmsys.wm_concat(T.ID) FROM TY_ROLE_SYS T;--同一列的所有值用逗号拼接

    SELECT REPLACE('小鸡快跑','小','大') FROM DUAL;--字符替换

    /************** Oracle模糊查询 ********************/

    做模糊查询instr()优于like()

    instr(字段,'关键字')>0相当于 字段like '%关键字%'
    instr(字段,'关键字')=1相当于 字段like '关键字%'
    instr(字段,'关键字')=0相当于 字段not like '%关键字%'

    日期格式化

    /**************日期 -> 字符串********************/
    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 nowMonthFROM DUAL; --获取时间的月
    SELECT TO_CHAR(SYSDATE,'dd')as nowDayFROM 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('05 Dec 2000', 'DD Mon YYYY') FROM DUAL;

    SELECT TO_TIMESTAMP_TZ('2009-3-9 17:51:23.23 -05:00','YYYY-MM-DD HH24:MI:SS.FF TZH:TZM') FROM DUAL;
    to_date(''2004-11-27 13:34:43'', ''yyyy-mm-dd hh24:mi:ss'') 将得到具体的时间

    select sysdate S1,
        round(sysdate) S2 ,
        round(sysdate,'year') YEAR,
        round(sysdate,'month') MONTH,
        round(sysdate,'day') DAY from dual -- 时间取整
        
    多种日期格式:

    YYYY:四位表示的年份
    YYY,YY,Y:年份的最后三位、两位或一位,缺省为当前世纪
    MM:01~12的月份编号
    MONTH:九个字符表示的月份,右边用空格填补
    MON:三位字符的月份缩写
    WW:一年中的星期
    D:星期中的第几天
    DD:月份中的第几天
    DDD:年所中的第几天
    DAY:九个字符表示的天的全称,右边用空格补齐
    HH,HH12:一天中的第几个小时,12进制表示法
    HH24:一天中的第几个小时,取值为00~23
    MI:一小时中的分钟
    SS:一分钟中的秒
    SSSS:从午夜开始过去的秒数
    FF:

    TRUNC函数

    /**************日期********************/
    --TRUNC 的英文是TRUNCATE,截短的意思,处理日期的时候,用于截取日期的一部分信息(获取不同精度的日期)
    SELECT TRUNC(SYSDATE) FROM DUAL; --2018-06-04 00:00:00 今天的日期为2018-06-04 00:00:00
    SELECT TRUNC(SYSDATE, 'mm') FROM DUAL; --2018-06-01 00:00:00 返回当月第一天.
    SELECT TRUNC(SYSDATE,'yy') FROM DUAL; --2018-01-01 00:00:00 返回当年第一天
    SELECT TRUNC(SYSDATE,'dd') FROM DUAL; --2018-06-04 00:00:00 返回当前年月日
    SELECT TRUNC(SYSDATE,'yyyy') FROM DUAL; --2018-01-01 00:00:00 返回当年第一天
    SELECT TRUNC(SYSDATE,'d') FROM DUAL; --2018-06-03 00:00:00 (星期天)返回当前星期的第一天
    SELECT TRUNC(SYSDATE, 'hh') FROM DUAL; --2018-06-04 14:00:00 当前时间为17:35
    SELECT TRUNC(SYSDATE, 'mi') FROM DUAL; --2018-06-04 14:54:00 TRUNC()函数没有秒的精确
    /***************数字********************/
    /*
        TRUNC(number,num_digits)
        Number 需要截短的数字,
        Num_digits 大于0取整数前n位,小于0取小数后n位
        TRUNC()函数截取时不进行四舍五入
    */
    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,2) FROM DUAL; --123
    select trunc(123,-3) FROM DUAL; --120

    SELECT    lEAD(T.ID, 1 , NULL) OVER (ORDER BY T.ID) NEXT_ID,
        T.ID,
        lAG(T.ID, 1 , NULL) OVER (ORDER BY T.ID) PRE_ID
    FROM TY_USER_SYS T ORDER BY T.ID
    --查询前一条ID,当前ID和后一条ID


    SELECT DECODE(1,'1','相等','不相等') FROM DUAL;
    --decode(字段或字段的运算,a,b,c)
    --当字段或字段的运算的值等于a时,该函数返回b,否则返回c


     

  • 相关阅读:
    repomd.xml signature could not be verified for kubernetes
    在远程连接最小化和关闭后执行失败的解决方案
    docker
    conan buildroot
    UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 250: illegal multibyte sequence
    最小化及关闭远程桌面后键盘与鼠标仍处于可交互状态
    docker push denied: requested access to the resource is denied
    HDU 3709 Balanced Number
    Ahoi2009 self 同类分布
    HDU 1711 Number Sequence
  • 原文地址:https://www.cnblogs.com/chenss15060100790/p/9104100.html
Copyright © 2020-2023  润新知