`

Oracle IN 操作符与LIKE操作符使用备忘

阅读更多

1.在Oracle中,使用IN操作符时,如果范围中出现了NULL,则不影响查询结果;如果使用 NOT IN,在范围中出现了NULL,则查询不返回结果。下面通过scott用户下的emp表为例说明:

 

 SELECT * FROM emp WHERE EMPNO IN (7499,7521,NULL);
 

查询结果如下:

 

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30

      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30

 

 

 SELECT * FROM emp WHERE EMPNO NOT IN (7499,7521,NULL)

 查询结果如下:

 

未选定行

 

2. Oracle使用LIKE操作符实现模糊查询,其中_表示任意一个字符,%表示0个或者1个或者任意多个字符。

 

SELECT * FROM emp WHERE ENAME LIKE '%A%';
 

查询结果:

 

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30

      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30

      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30

      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30

      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10

      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20

      7900 JAMES      CLERK           7698 03-12月-81            950                    30

 

LIKE操作符不仅可以使用在字符串类型的数据上,也可以在日期类型上使用:

 

SELECT * FROM emp WHERE HIREDATE LIKE '%1';

 查询结果:

 

 

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30

      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30

      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20

      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30

      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30

      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10

      7839 KING       PRESIDENT            17-11月-81           5000                    10

      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30

      7900 JAMES      CLERK           7698 03-12月-81            950                    30

      7902 FORD       ANALYST         7566 03-12月-81           3000                    20

 

如果模糊查询未设置任何关键字,则查询所有记录,这时可以使用'%%'来进行匹配:

 

 SELECT * FROM emp WHERE ENAME LIKE '%%';

      EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO

---------- ---------- --------- ---------- -------------- ---------- ---------- ----------

      7369 SMITH      CLERK           7902 17-12月-80            800                    20

      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30

      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30

      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20

      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30

      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30

      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10

      7788 SCOTT      ANALYST         7566 19-4月 -87           3000                    20

      7839 KING       PRESIDENT            17-11月-81           5000                    10

      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30

      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20

      7900 JAMES      CLERK           7698 03-12月-81            950                    30

      7902 FORD       ANALYST         7566 03-12月-81           3000                    20

      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10

分享到:
评论

相关推荐

    oracle操作符优化.pdf

    Oracle数据库操作符优化是提升数据库...综上所述,优化Oracle操作符使用,可以显著提升数据库性能,降低资源消耗,尤其在处理大量数据时效果更为明显。在编写SQL时,应根据数据分布和业务需求,灵活运用这些优化策略。

    oracle操作符优化[参考].pdf

    - 大于或小于操作符通常会使用索引,但通过调整查询条件,比如`A>2`与`A>=3`,可以优化查询计划,避免不必要的步骤。 7. **LIKE操作符**: - LIKE操作符支持通配符查询,但`%`通配符可能导致全表扫描。尽可能使用...

    oracle like 的优化

    #### 二、LIKE操作符的基本用法与问题 LIKE操作符支持三种主要的模式匹配类型: 1. **不以“%”开头**:例如`LIKE 'AB%'`。 2. **不以“%”结尾**:例如`LIKE '%CD'`。 3. **以“%”开头和结尾**:例如`LIKE '%XYZ...

    SQL优化 '%5400%' LIKE操作符

    2. **SQL语句编写技巧**:合理使用SQL语法结构,比如替换 `IN` 和 `NOT IN` 为 `EXISTS` 和 `NOT EXISTS`,以及避免使用导致全表扫描的操作符等,都是提高查询效率的有效手段。 3. **函数和操作符的优化**:优化函数...

    Oracle——sql语句优化

    本文将深入探讨几种常见的SQL操作符及其优化方法,包括IN、NOT IN、、IS NULL、>、<、LIKE以及UNION等,旨在帮助数据库管理员和开发人员构建更为高效、响应迅速的应用系统。 #### IN操作符:灵活性与性能的平衡 IN...

    oracle查询语句优化

    - **优点**:使用IN操作符编写的SQL语句易于理解和编写,符合现代软件开发风格。 - **缺点**:使用IN操作符会导致性能降低。Oracle会尝试将IN操作符转换为多个表之间的连接。如果转换失败,则先执行子查询,再查询...

    oracle语句优化.docx

    本文将详细地介绍 Oracle 语句优化的方法和技巧,涵盖多表关联、EXISTS 和 IN 语句的使用、INDEX_JOIN 优化、WHERE 和 HAVING 语句的区别、NOT IN 和 <> 操作符的使用、LIKE 操作符的替代、UNION 操作符的优化、SQL ...

    Oracle实验一sql答案

    Oracle 实验一 SQL 答案详解 ...Oracle 实验一涵盖了基本表 EMP 和 DEPT 的操作,包括使用 BETWEEN 操作符、ORDER BY 子句和 LIKE 操作符等知识点。这些知识点对于深入学习 Oracle 数据库非常重要。

    oracle操作文档

    - **LIKE 操作符**:使用 LIKE 进行模糊匹配时,可以考虑使用 INSTR 函数替代,以提高性能。 - 示例:`SELECT * FROM T1 WHERE NAME LIKE '%abc%'`,可以替换为:`SELECT * FROM T1 WHERE INSTR(NAME, 'abc') > 0` ...

    Oracle集合操作函数union、intersect、minus.docx

    UNION ALL 操作符与 UNION 操作符类似,但是它不会去掉重复行,而是将所有结果都保留。例如: SELECT id, name FROM worker UNION ALL SELECT empno, ename FROM emp; 三、INTERSECT (交集) INTERSECT 操作符可以...

    oracle exp query参数 转义符的各个操作系统通用解决方法

    Oracle EXP_Query参数转义符的各个操作系统通用解决方法是使用parfile文件,实现跨平台的通用解决方法。正确地处理EXP_Query参数转义符,可以确保数据的正确性和完整性,提高工作效率和数据处理速度。

    OracleSQL的优化.pdf

    优化器把使用 LIKE 操作符和一个没有通配符的表达式组成的检索表达式转换为一个"="操作符表达式。例如,优化器会把表达式 `ename LIKE 'SMITH'` 转换为 `ename = 'SMITH'`。优化器只能转换涉及到可变长数据类型的...

    oracle中exists_和in的效率问题详解

    EXISTS 和 IN 都是 Oracle 中的集合操作符,但它们在使用和执行效率上有所不同。本文将深入探讨 EXISTS 和 IN 的使用场景、执行机制和效率问题。 EXISTS 的使用场景和机制 EXISTS 主要用于判断子查询是否存在记录...

    Oracle SQL语句优化技术分析

    - **优点**:使用`IN`操作符编写的SQL语句易于理解和编写,符合现代软件开发风格。 - **缺点**:相较于其他操作符,`IN`操作符可能导致较低的性能,尤其是在处理大量数据时。 **Oracle执行逻辑** - Oracle尝试将`IN...

    oracle查询优化

    本文将深入探讨Oracle查询优化的几个核心方面,包括操作符优化、SQL语句构造技巧以及查询计划调整策略。 #### 操作符优化 **1. IN操作符** 虽然IN操作符提供了一种直观的方式来表达“属于集合”的逻辑,但在性能...

    arcsde 操作oracle的操作原理

    2. **调用SDE.ST_ASTEXT函数**:该函数作为操作符,用于将空间数据转换为文本格式。它实际上调用了更底层的SDE.ST_GEOMETRY_OPERATOR.ST_ASTEXT_F函数。 3. **SDE.ST_GEOMETRY_OPERATOR.ST_ASTEXT_F函数执行**:这...

    Oracle函数:根据自定义分隔符拆分字段SPLIT-STR()然后查询检索数据库表数据

    7、高效字段拆分:此函数能够迅速将字段中的多个值按逗号或其他自定义分隔符拆分成独立的行,极大地简化了对复合字段的操作过程。 使用场景: 商品分类管理:当您的商品分类信息存储在一个字段中时,此函数可以帮助...

    Toad For Oracle使用教程

    Toad For Oracle使用教程详细讲解了如何使用Toad For Oracle工具操作数据库。

    ORACLE SQL语句性能优化

    6. **谨慎使用LIKE操作符**:LIKE操作符与通配符配合可能导致全表扫描。尽可能避免使用前导通配符(如'%value'),并考虑使用索引范围查询来提高性能。 7. **优化FROM子句中的表顺序**:在基于规则的优化器中,从右...

    oracle 常用应用操作总结

    - Oracle SQL的操作符优先级遵循特定的规则,从高到低依次是:算术操作符、连接操作符、比较操作符、NOT逻辑操作符、AND逻辑操作符、OR逻辑操作符。 3. **创建存储过程**: - `CREATE PROCEDURE`语句用于创建存储...

Global site tag (gtag.js) - Google Analytics