• Oracle 语法汇总


    1) 时间字符串处理: " || " 连接符,相当于SQLServer的 " + "

    2) to_date() 将字符串转换为时间格式  

    select to_date(TO_CHAR(SYSDATE-1,'YYYY-MM-DD')||' 20:30:00','yyyy-mm-dd HH24:mi:ss'), to_date(TO_CHAR(SYSDATE,'YYYY-MM-DD')|| ' 08:30:00','yyyy-mm-dd HH24:mi:ss')  from deshuaweidefecthistory

    3)decode(expression,value,result1,result2)   

    如果expression=value,则输出result1,否则输出result2

    eg:

    select decode(1+2,3,'a','b') from t1;  //输出 a

     应用: 

    1. 使用decode函数分段

     将成绩表中分数大于90分的分为优秀,80~90分为良好,70~80分为中等,60~70分为及格,60分以下为不及格。

         

    2 使用decode函数对表做行列转换

          

    如图所示,有一张三个科目的成绩表,各科目名称和相应的分数呈现在行中,

    现想将各科目名称转换为列名,每列的内容为对应科目的分数。

       

    (如图,先用decode函数判断subject为Chinese时,输出score,不为Chinese时,输出为NULL,

    因为共有三个科目,所以输出其中一个科目的分数时,其他科目的分数为NULL,这里只需要

    用sum()函数来实现聚合的作用,将空值去除掉就可以了)

       

    (sum()函数分别将name为John的每个列的值相加,如Chinese列,80+NULL+NULL=80,

    再将name为Will的每个列的值相加,然后group by将name分组,最终达到如上图聚合的效果)

    原文链接:https://blog.csdn.net/wcacer/article/details/100181058

    4) NVL(QTYREMOVED,0)    

      从两个表达式返回一个非 null 值,如果QTYREMOVED为空就返回0

    5) sign()函数

    作用是,判断参数的值大于0则返回1,等于0则返回0,小于0则返回-1

    eg:sign(70-10) 返回1 

    6)like  模糊查找五个字符的并以SMD开头的数据

    SELECT MFGLINENAME FROM A_MFGLINE WHERE (MFGLINENAME LIKE 'HNSMD___' OR MFGLINENAME LIKE 'SMD__')
    

      

    7) start with connect by prior   递归算法

     SELECT c.containerid,c.containername,C.PRODUCTID,C.MFGORDERID FROM CONTAINER C
     START WITH C.CONTAINERNAME = 'TMTM0123456789012341234567890'
     CONNECT BY PRIOR C.CONTAINERID = C.SPLITFROMID
     UNION 
     SELECT c.containerid,c.containername,C.PRODUCTID,C.MFGORDERID FROM CONTAINER C
     START WITH C.CONTAINERNAME = 'TMTM0123456789012341234567890'
     CONNECT BY PRIOR C.SPLITFROMID = C.CONTAINERID
     ORDER BY FACTORYSTARTDATE
    

    8)  分页函数

    SELECT * FROM (
     SELECT t.*, rownum rn FROM
     (
              SELECT mes_equipment,child_equipment,station_path,station_order,line_address,line_path 
              FROM edc_siplace_equipment WHERE mes_line='SMD07'
     ) t)  WHERE rn > (1-1)*10 AND rn <= 1*10;
    

     9)  

    10)  

  • 相关阅读:
    05.Linux Startup & Shutdown
    04.Linux Disk Partition & Mount Point
    03Oracle数据查询(二)
    02Oracle数据查询(一)
    01Oracle数据库系统环境搭建
    02域名的选择技巧与注册实战
    01快速认识阿里云网站建设
    Linux文件操作
    Linux目录操作
    Linux根目录介绍
  • 原文地址:https://www.cnblogs.com/opts/p/16045163.html
Copyright © 2020-2023  润新知