• Oracle 常用函数


         主要是对项目中用过的 oracle 函数进行总结,并做出目录,方便后续项目是快速查找,提高效率。

    01.Round (数值的四舍五入)

    描述:传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果。

    SELECT Round(Number,[Decimal_Places])FROM Dual;

    param:
    Number:欲处理的数值
    Decimal_Places:四舍五入,小数取几位(预设为0)
    Sample:

    SELECT Round(123.456,1)FROM Dual;

    output:123.5

    SELECT Round(123.4567,3)FROM Dual;

    output:123.458

    02.Case ...When... (oracle 的if...else...)

    case XX属性(可不填) when XX属性判断 then XX else XX end 你要赋值的表属性
    Sample:
    CASE lanage
    WHEN lanage='java' then
    '01'
    else
    '02'
    end code;
    case ... when 类似与程序语言中的 if(){}else{}

    03.Nvl (数据表字段的判空处理)

    Nvl(string, replace_with)
    param:
    string:欲处理字符串
    replace_with:要替换的字符串
    如果string为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL
    可以用于字段判空后的处理操作,比如教室职称,如果字段为空,都默认为普通。
    Sample:

    select nvl(t.title,'普通') from teacher t;

    04.Decode (字段名称的转换)

    decode(XX属性,XX属性值,'要转译为的字符串')函数:
    举例:

    Select decode (t.title,'01','普通','02','高级','其他') from teacher 
    这个函数在项目中用的比较多,与上面的case_when..其实有点相似

    05.树递归查询

    select ...
    from ....
    start with ....[开始递归遍历的起点]
    connect by prior [级联关系,比如 下级.parentid = 上级.id]
    当前表字段=级联表字段 start with与connect by prior语句完成递归记录,形成一棵树形结构,通常可以在具有层次结构的表中使用。
     (select c.swjg_dm
              from dm_gy_swjg c
             start with c.swjg_dm = '000000000'
            connect by prior c.swjg_dm = c.sjswjg_dm)

    06.Trunc (截取日期和数字处理)

    其具体的语法格式如下:

    1)Trunc(Date[,Fmt])
    Trunc(To_Date('24-Nov-199908:00Pm'),'Dd-Mon-YyyyHh:MiAm'='24-Nov-199912:00:00Am'
    2)Trunc(ForNumber)
    --Trunc函数返回处理后的数值,其工作机制与Round函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
    Trunc(89.9852=89.98
    Trunc(89.985=89
    Trunc(89.985-1=80 
    如果我们不需要从具体的表来取得

    表中数据,而是单纯地为了得到一些我们想得到的信息,并要通过Select完成时,就要借助一个对象,这个对象,就是Dual;
    就是将数值型或者日期型转化为字符型。
    Sample:

    To_Char(Number,'格式')
    To_Char(Salary,’$99,999.99’)

    07.Regexp_Substr (正则表达式的匹配)

    Regexp_Substr(String,Pattern,Position,Occurrence,Modifier)
    __Srcstr:需要进行正则处理的字符串
    __Pattern:进行匹配的正则表达式
    __Position:起始位置,从第几个字符开始正则表达式匹配(默认为1)
    __Occurrence:标识第几个匹配组,默认为1
    __Modifier:模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)

    Sample:

    Select Regexp_Substr('17,20,23','[^,]+',1,1,'i') As Str From Dual;

    08.Substr (字符串的截取)

    Substr(字符串,截取开始位置,截取长度)
    Substr('HelloWorld',1,1)//返回结果为'h'*0和1都是表示截取的开始位置为第一个字符
    Substr('HelloWorld',2,4)//返回结果为'Ello'

    09.Replace('要更改字符串','被替换掉','替换')

    Sample:

    SelectReplace('111222333444','222','888')FromDual;
    
    output:'111888333444'

    10.Instr (字符串中特定字符的索引位置,从1开始)

    Instr(源字符串,目标字符串,起始位置,匹配序号)
    Instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始到字符的结尾就结束。

    Param:

    Instr(String1,String2[,Start_Position[,Nth_Appearance]])
    String1源字符串,要在此字符串中查找。
    String2要在String1中查找的字符串.
    Start_Position代表String1的哪个位置开始查找。此参数可选,如果省略默认为1.字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
    Nth_Appearance代表要查找第几次出现的String2.此参数可选,如果省略,默认为1.如果为负数系统会报错。
    SelectInstr('Syranmo','s')FromDual;--返回1
    SelectInstr('Syranmo','Ra')FromDual;--返回3

    11.add_months (获取特定月份)

    add_months(data,number)函数输入日期上加上指定的几个月返回一个新的日期;
    Sample:

    add_months(to_date('15-Nov-1961','d-mon-yyyy'),1) 

    output:  15-Dec-1961
    add_months(sysdate, -1) 返回当前日期月份-1,就是上月

  • 相关阅读:
    bzoj 维护序列seq(双标记线段树)
    kmp算法总结
    2013蓝桥杯
    Longge的问题(欧拉,思维)
    mode(思维,注意内存)
    Jam's math problem(思维)
    77
    999
    888
    无 PowerShell.exe 执行 Empire 的几种姿势
  • 原文地址:https://www.cnblogs.com/java-class/p/5199145.html
Copyright © 2020-2023  润新知