• oracle中几个函数


    1.NVL
    NVL (E1, E2) 的功能为:如果E1为NULL,则函数返回E2,否则返回E1本身。
    但此函数有一定局限,所以就有了NVL2函数。
    拓展:NVL2函数 : Oracle / PLSQL中的一个函数,
    Oracle在NVL函数的功能上扩展,提供了NVL2函数。
    NVL2 (E1, E2, E3) 的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。

    此NVL的作用与SQLserver 中的 ISNULL( string1, replace_with) 一样。
    注意:
    string1和replace_with必须为同一数据类型,除非显式的使用TO_CHAR函数。

    例:nvl(yanlei777,0) > 0
    NVL(yanlei777, 0) 的意思是 如果 yanlei777 是NULL, 则取 0值

    2.DECODE(value, if1, then1, if2,then2, if3,then3, . . . else ),V
    alue 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。
    当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;
    如果value等于if2,Decode函数结果是then2;等等。
    事实上,可以给出多个if/then 配对。
    如果value结果不等于给出的任何配对时,Decode 结果就返回else 。
    需要注意的是,这里的if、then及else 都可以是函数或计算表达式。

    3.case when语句类似于C#语法中的if else语法,
    比如:select case when id > 0 then 1 else 0 end as flag from table1,
    这句sql就表示 筛选所有table1中的记录,当id大于0时,
    新的flag列就为1,否则,flag列为0

    round( case when ttl = 0 then 0 when round(ttls/8,0) = 0 then 0 else ttl/round(ttls/8,0) end,2) as wos
    4.START WITH CONNECT BY PRIOR子句实现递归查询
    START WITH t.PARENT_ID = '0' CONNECT BY PRIOR t.ID = t.PARENT_ID

    select num1,num2,level
    from carol_tmp
    start with num2=1008
    connect by num2 = prior num1 order by level desc;

    prior放的左右位置决定了检索是自底向上还是自顶向下.很明显以上的sql选择了自底向上,所以最终得到了根节点。

  • 相关阅读:
    Codeforces 749C【模拟】
    Codeforces 358D【DP】
    Lightoj1122 【数位DP】
    Codeforces 744C【DFS】
    大晚上就是想说说话
    HDU5997 【线段树】
    codeforces743D 【DFS】
    lightoj 1422【区间DP·分类区间首元素的情况】
    lightoj 1125【背包·从n个选m个】
    Lightoj 1147【DP】
  • 原文地址:https://www.cnblogs.com/zhangzack/p/9479518.html
Copyright © 2020-2023  润新知