oracle between all in 和 exists的区别,模糊查询4个正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle between all in 和 exists的区别,模糊查询4个正则表达式相关的知识,希望对你有一定的参考价值。

--条件比较 
/*
=,!=,<>,<,>,<=,>=,
any,some,all
is null,is not null
between x and y
in(list),not in(list)
exists(sub-query)
like  _ ,%,escape ‘\‘   _\% escape ‘\’
*/

--any some 只要满足其中的任何一个即可
SELECT E.ENAME ,E.JOB,E.SAL FROM EMP E WHERE E.SAL > ANY(1000,2000,3000)
SELECT E.ENAME ,E.JOB,E.SAL FROM EMP E WHERE E.SAL > SOME(1000,2000,3000)

--all 满足所有的
SELECT E.ENAME ,E.JOB,E.SAL FROM EMP E WHERE E.SAL < ALL(1000,2000,3000)
SELECT E.ENAME ,E.JOB,E.SAL FROM EMP E WHERE E.SAL > ALL(1000,2000,3000)

--判断是否为null不能用"="   
SELECT E.* FROM EMP E WHERE E.COMM=NULL; --无数据
SELECT E.* FROM EMP E WHERE NULL=NULL --无数据
SELECT E.* FROM EMP E WHERE E.COMM IS NULL;
SELECT E.* FROM EMP E WHERE E.COMM IS NOT NULL;

--and=与、or=或、between  and 在两者之间
SELECT T.* FROM T_THREE_KILLED T WHERE T.C_AGE >= 30 AND T.C_SEX = ‘男‘;
SELECT T.* FROM T_THREE_KILLED T WHERE T.C_AGE = 30 OR T.C_AGE = 31;
SELECT T.* FROM T_THREE_KILLED T WHERE T.C_AGE BETWEEN 27 AND 33;

--IN EXISTS 的区别
--IN会遍历表表中所有数据与条件进行匹配,所有当子查询数据较多时使用IN会使查询效率较低
SELECT T.*
  FROM T_THREE_KILLED T
 WHERE T.C_AGE IN
       (SELECT R.C_AGE FROM T_THREE_KILLED R WHERE R.C_AGE BETWEEN 30 AND 33);
       
--EXISTS 只要查询语句可以返回一条数据则整个表达式为true,适用于子查询数据较多
SELECT T.*
  FROM T_THREE_KILLED T
 WHERE EXISTS (SELECT R.C_AGE
          FROM T_THREE_KILLED R
         WHERE T.C_AGE = R.C_AGE
           AND R.C_AGE BETWEEN 30 AND 33);

--LIKE模糊查询  ESCAPE 转义符
--在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符  
SELECT T.* FROM T_THREE_KILLED T WHERE T.C_NAME LIKE ‘%l\%%‘ escape(‘\‘);

--ORACLE中的支持正则表达式的函数主要有下面四个:
--REGEXP_LIKE :与LIKE的功能相似
--REGEXP_INSTR :与INSTR的功能相似
--REGEXP_SUBSTR :与SUBSTR的功能相似
--REGEXP_REPLACE :与REPLACE的功能相似

 

以上是关于oracle between all in 和 exists的区别,模糊查询4个正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Oracle中between 和 in

Oracle 11g RAC INS-06006 Passwordless SSH connectivity not set up between the following node(s) 解决方法

ORACLE中关于使用between取不同的区间值和取反

Non-atomic probability takes all values between $0$ and $1$

oracle中常见的查询操作

oracle 优化or 更换inexistsunion all几个字眼