zoukankan      html  css  js  c++  java
  • ORACLE一些不常用的脚本

    本篇介绍一下一些不太常用的脚本,它们往往有“奇能异效”,但是由于不太常用、不常见、或效率方面的原因,往往被大多数人给遗忘在某些角落里。呵呵,不知道你看见下面这些脚本,是否觉得眼熟呢?

    1: 如果我需要从SCOTT模式下EMP表中查询职位为CLERK(秘书)、SALESMAN(销售人员)这两种员工,你会怎么写?是下面哪种写法呢?

    SELECT * FROM SCOTT.EMP WHERE JOB =ANY('CLERK''SALESMAN'
    /

    SELECT * FROM SCOTT.EMP WHERE JOB IN ('CLERK''SALESMAN')

    /  


     ANY表示满足于条件中任何一个,可以吧条件拆分成OR,或等效于IN。这个命令有些不常用,很多人习惯用IN替代.

    2: 

    查询收入比所有职位为MANAGER都高的员工

    SELECT * FROM SCOTT.EMP WHERE JOB != 'MANAGER' AND SAL >(SELECT MAX(SAL) FROM SCOTT.EMP WHERE JOB='MANAGER')
    /
    SELECT * FROM SCOTT.EMP WHERE JOB !='MANAGER' AND SAL > ALL(SELECT SAL FROM SCOTT.EMP WHERE JOB ='MANAGER')

    /

    ALL表示列表中的所有条件都需要满足。 可以拆分成AND条件。

    3: SOME类似于ANY,在用法意义上和ANY意义一样。表示只要满足于条件中的一个。 SOME、ANY、ALL这三者在SQL脚本中的效率一般不及子查询(多行子查询或关联子查询),建议还是少在脚本中使用它们。

    4: 假如需要在EMP表中插入一条员工名为MR'WANG的记录,由于'一般用来标示一段字符串,如果要'作为一个字符插入表中,其实可以两个单引号''来表示
    INSERT INTO SCOTT.EMP

    VALUES(7903'MR''WANG',  'SALESMAN'7698, TO_DATE('1984-12-25''YYYY-MM-DD'), 300030) 

     大家一般用_ 、%来做模糊查询匹配,但是假如我需要查询字符串中包含_或%字符的模糊查询,这个该怎么做呢?比如需要你查询数据库中所有表名包含_字符的表,可以用ESCAPE关键字指定一个转义字符“\"来实现。这样转移字符后的下划线就不再表示匹配关系了。如下所示:

    SELECT * FROM ALL_TABLES WHERE TABLE_NAME LIKE '%\_%' ESCAPE '\' 

    5: IS NAN 和 IS INFINITE

    CREATE TABLE TEST
    (
           T1    
    NUMBER           ,
           T2    BINARY_DOUBLE    ,
           T3    BINARY_FLOAT
    )

    INSERT INTO TEST
    VALUES(1234.423.45)

    SELECT * FROM TEST 

    INSERT INTO TEST

    VALUES(13'NAN''NAN')  

    INSERT INTO TEST

    VALUES(14, 'INF', '-INF') 

    此时你在PL/SQL里面查询SELECT * FROM TEST时,会报下面的错误(SELECT T1, TO_CHAR(T2), T0_CHAR(T3) FROM TEST 则不会报ORA-01722的错误,这是因为NAN等不能转化为数字式格式的缘故)还是去SQL/PLUS里面查询吧,如图所示, IS NAN 表示非数值匹配  IS INFINITI 表示数值时无限值。

     

     


    扫描上面二维码关注我
    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    class-dump + DumpFrameworks.pl
    使用 U盘 重装 Mac OSX
    本地化应用程序
    UINavigationBar 总结
    Xcode 杂七杂八
    App 打包并跳过 AppStore 的发布下载
    Summary of Mac Versions
    QT5安装(null)
    如何实现LAN或WAN远程开机?
    DELL 8700重装系统
  • 原文地址:https://www.cnblogs.com/kerrycode/p/2101955.html
Copyright © 2011-2022 走看看