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数据库操作符优化是提升数据库...综上所述,优化Oracle操作符使用,可以显著提升数据库性能,降低资源消耗,尤其在处理大量数据时效果更为明显。在编写SQL时,应根据数据分布和业务需求,灵活运用这些优化策略。
- 大于或小于操作符通常会使用索引,但通过调整查询条件,比如`A>2`与`A>=3`,可以优化查询计划,避免不必要的步骤。 7. **LIKE操作符**: - LIKE操作符支持通配符查询,但`%`通配符可能导致全表扫描。尽可能使用...
#### 二、LIKE操作符的基本用法与问题 LIKE操作符支持三种主要的模式匹配类型: 1. **不以“%”开头**:例如`LIKE 'AB%'`。 2. **不以“%”结尾**:例如`LIKE '%CD'`。 3. **以“%”开头和结尾**:例如`LIKE '%XYZ...
2. **SQL语句编写技巧**:合理使用SQL语法结构,比如替换 `IN` 和 `NOT IN` 为 `EXISTS` 和 `NOT EXISTS`,以及避免使用导致全表扫描的操作符等,都是提高查询效率的有效手段。 3. **函数和操作符的优化**:优化函数...
本文将深入探讨几种常见的SQL操作符及其优化方法,包括IN、NOT IN、、IS NULL、>、<、LIKE以及UNION等,旨在帮助数据库管理员和开发人员构建更为高效、响应迅速的应用系统。 #### IN操作符:灵活性与性能的平衡 IN...
- **优点**:使用IN操作符编写的SQL语句易于理解和编写,符合现代软件开发风格。 - **缺点**:使用IN操作符会导致性能降低。Oracle会尝试将IN操作符转换为多个表之间的连接。如果转换失败,则先执行子查询,再查询...
本文将详细地介绍 Oracle 语句优化的方法和技巧,涵盖多表关联、EXISTS 和 IN 语句的使用、INDEX_JOIN 优化、WHERE 和 HAVING 语句的区别、NOT IN 和 <> 操作符的使用、LIKE 操作符的替代、UNION 操作符的优化、SQL ...
Oracle 实验一 SQL 答案详解 ...Oracle 实验一涵盖了基本表 EMP 和 DEPT 的操作,包括使用 BETWEEN 操作符、ORDER BY 子句和 LIKE 操作符等知识点。这些知识点对于深入学习 Oracle 数据库非常重要。
- **LIKE 操作符**:使用 LIKE 进行模糊匹配时,可以考虑使用 INSTR 函数替代,以提高性能。 - 示例:`SELECT * FROM T1 WHERE NAME LIKE '%abc%'`,可以替换为:`SELECT * FROM T1 WHERE INSTR(NAME, 'abc') > 0` ...
UNION ALL 操作符与 UNION 操作符类似,但是它不会去掉重复行,而是将所有结果都保留。例如: SELECT id, name FROM worker UNION ALL SELECT empno, ename FROM emp; 三、INTERSECT (交集) INTERSECT 操作符可以...
Oracle EXP_Query参数转义符的各个操作系统通用解决方法是使用parfile文件,实现跨平台的通用解决方法。正确地处理EXP_Query参数转义符,可以确保数据的正确性和完整性,提高工作效率和数据处理速度。
优化器把使用 LIKE 操作符和一个没有通配符的表达式组成的检索表达式转换为一个"="操作符表达式。例如,优化器会把表达式 `ename LIKE 'SMITH'` 转换为 `ename = 'SMITH'`。优化器只能转换涉及到可变长数据类型的...
EXISTS 和 IN 都是 Oracle 中的集合操作符,但它们在使用和执行效率上有所不同。本文将深入探讨 EXISTS 和 IN 的使用场景、执行机制和效率问题。 EXISTS 的使用场景和机制 EXISTS 主要用于判断子查询是否存在记录...
- **优点**:使用`IN`操作符编写的SQL语句易于理解和编写,符合现代软件开发风格。 - **缺点**:相较于其他操作符,`IN`操作符可能导致较低的性能,尤其是在处理大量数据时。 **Oracle执行逻辑** - Oracle尝试将`IN...
本文将深入探讨Oracle查询优化的几个核心方面,包括操作符优化、SQL语句构造技巧以及查询计划调整策略。 #### 操作符优化 **1. IN操作符** 虽然IN操作符提供了一种直观的方式来表达“属于集合”的逻辑,但在性能...
2. **调用SDE.ST_ASTEXT函数**:该函数作为操作符,用于将空间数据转换为文本格式。它实际上调用了更底层的SDE.ST_GEOMETRY_OPERATOR.ST_ASTEXT_F函数。 3. **SDE.ST_GEOMETRY_OPERATOR.ST_ASTEXT_F函数执行**:这...
7、高效字段拆分:此函数能够迅速将字段中的多个值按逗号或其他自定义分隔符拆分成独立的行,极大地简化了对复合字段的操作过程。 使用场景: 商品分类管理:当您的商品分类信息存储在一个字段中时,此函数可以帮助...
Toad For Oracle使用教程详细讲解了如何使用Toad For Oracle工具操作数据库。
6. **谨慎使用LIKE操作符**:LIKE操作符与通配符配合可能导致全表扫描。尽可能避免使用前导通配符(如'%value'),并考虑使用索引范围查询来提高性能。 7. **优化FROM子句中的表顺序**:在基于规则的优化器中,从右...
- Oracle SQL的操作符优先级遵循特定的规则,从高到低依次是:算术操作符、连接操作符、比较操作符、NOT逻辑操作符、AND逻辑操作符、OR逻辑操作符。 3. **创建存储过程**: - `CREATE PROCEDURE`语句用于创建存储...