- 浏览: 100088 次
- 性别:
- 来自: 无锡
文章分类
最新评论
遇到查询问题, 写SQL当where status =! 'Y'时, 期望结果是: 查询出status不为 'Y' (包含null)的数据。 然而现实是: 查询出status不为 'Y', 和不为 'null' 的数据。 有例表:emp emp_no name age status 001 Tom 17 Y 002 Sun 14 N 003 Tom 15 004 Tom 12 N --All date select * from emp; -- != 'Y' 不包含null (emp_no = 002, 004) select * from emp where status != 'Y'; -- != 'Y' 包含null (emp_no = 002, 003, 004) select * from emp where status != 'Y' or status is null; //事实上,并不仅仅“不等于号”与Null的关系是如此的,其他操作符也类似,只不过“不等于号”使用场景的特殊性让我们容易发觉此特性。 //其中原因在于Null,关于Null的各种情况说明可见以下Oracle的文档: http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements005.htm http://www.cnblogs.com/nick-huang/p/3921605.html
发表评论
-
LISTAGG
2019-01-09 15:52 0select LISTAGG(i.coverage_name, ... -
sql改变字段类型
2018-08-22 18:08 1460https://blog.csdn.net/cai709557 ... -
Mybatis #{}和${} 区别
2018-07-25 13:16 424一般${}用在我们能够确定值的地方,也就是我们程序员自己赋值的 ... -
ORA-04063解决方法
2018-02-05 18:02 1651select * from dba_objects where ... -
SQL查询表中重复数据
2017-10-30 12:01 717SQL查询重复数据 有例 ... -
Mysql修改重置密码
2017-09-19 09:47 610http://blog.csdn.net/Jiang_Rong ... -
什么是BOM头
2017-03-17 14:42 634类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编 ... -
Oracle trunc()函数的用法
2017-01-09 18:16 400--Oracle trunc()函数的用法 /******* ... -
select 1 from dual中 1 的含义
2017-01-09 16:47 740//select 1 from table; //selec ... -
oracle NVL()函数 空值转换
2016-11-03 12:13 456一NVL函数是一个空值转换函数 NVL(表达式1,表达式 ... -
提示ORA-00904: "字段名": 标识符无效
2016-11-01 15:41 640提示ORA-00904: "表名" &qu ... -
sql筛选一条记录同时满足一个字段不等于10另一个不等于20
2016-10-28 16:05 924select * from t_user where not ... -
cmd下sqlplus登陆常用命令(转)
2016-10-11 14:57 581sqlplus + 数据库名字+@。 ... -
oracle update时间格式值
2016-09-26 18:04 870目的:需要将时间更改为 9/13/2016 9:00:00 A ... -
转义字符 & ' ora 01756 引号内字符串没有正确结束(字符串中包含')
2016-09-15 14:42 9751:' oracle中update的时候,字符串中为'it's ... -
decode函数,decode(sign)
2016-09-07 11:41 507//decode(字段或字段的运算,值1,值2,值3) ... -
PLSQL查询分类组中的每一组最大值的一条记录
2016-09-05 17:37 2835//根据object_id分组,每组中,取survey_id最 ... -
PLSQL用spool导出CSV数据command
2016-08-19 09:47 2642set pages 5000 set lines 2000 ... -
Oracle SQL 两列合并为一列,并且可以自定义添加一些字符
2016-08-17 14:13 1028//表t_clm_case下claim_no列,与表t_clm ... -
SQL语句替代变量&
2016-04-11 11:14 1197在SQL*Plus中默认的"&"表 ...
相关推荐
在Oracle数据库管理中,链接查询(也称为连接查询或JOIN查询)是数据库操作的一个核心概念,它用于合并来自两个或更多表的数据。本篇将详细探讨Oracle中的链接查询及其优化,特别是基于索引的SQL语句优化策略。 一...
- **集合运算符**:UNION、UNION ALL、INTERSECT、MINUS,用于处理多个查询结果集。 #### 模糊查询与NULL处理 - **LIKE**:用于模糊查询,支持通配符'%'和'_',分别代表任意数量的字符和单个字符。 - **IS NULL**与...
数据查询是数据库中最基础的操作之一,它通过指定要查询的列以及设定的查询条件,从原始数据表中筛选出符合条件的数据,并将这些数据组织成一个新的结果集(即查询结果表)。这一过程不涉及物理表的创建,而是通过...
- **NULL与等号的关系**: 在处理`NULL`值时,传统的等号比较规则不适用。列可以是`NULL`,但它永远不会等于`NULL`。Oracle不会阻止你误用等号来判断`NULL`,但这样的查询将永远不会返回任何行。 - **使用NVL函数**...
选择列表指定了查询结果中包含的列;FROM子句指定了数据来源表或视图;WHERE子句定义了查询条件。 例如,下面的语句用于查询`testtable`表中姓名为“张三”的`nickname`字段和`email`字段: ```sql SELECT ...
当检查某条记录是否在另一查询结果中存在时,使用EXISTS通常比IN更高效,因为EXISTS只关心是否存在匹配,不关心匹配的数量。 **10. 用NOT EXISTS替代NOT IN** 类似地,对于否定条件,NOT EXISTS也通常优于NOT IN,...
避免使用不等号(<> 或 !=) - **原因分析**:这些符号不会利用索引进行查询,从而增加查询时间。 - **优化建议**:将条件改为`a > xx OR a 的形式,这样可以充分利用索引。 ##### 4. 设计表时将索引列设为非空 ...
- 查询时使用等号`=`代替`IS NULL`。 **1.3 避免使用!=或操作符** - **原因**:这些操作符可能导致索引失效。 - **替代方案**:尝试重构查询以使用`=`, `IN`, 或其他更友好的操作符。 **1.4 避免在WHERE子句中...
NULL搜索条件(NULL Search Condition)用于处理可能包含NULL值的情况,因为NULL在逻辑上不等同于任何值,包括自身。 对结果集进行排序是常见的需求,可以使用ORDER BY子句对一列或多列进行单列排序(Single Column...
- `MINUS`用于移除结果集(减): 获取第一个查询结果中不存在于第二个查询结果中的记录。 #### 十三、ROWNUM的使用 - **ROWNUM**是Oracle中的一个特殊字段,用于标识查询结果中的行号。 - 隐含字段ROWNUM: 默认...
- 将查询改为使用 `IS NULL` 或 `IS NOT NULL` 来判断空值。 ```sql SELECT id FROM t WHERE num IS NULL; ``` #### 2. 避免使用通配符 `%` 开始的 `LIKE` 查询 - **建议**: 避免使用 `LIKE` 运算符开头为 `%`...
- **MINUS**:从第一个查询结果集中减去第二个查询结果集的记录。 #### 16. ROWNUM 使用 - **ROWNUM隐含字段**:自动分配行号。 - **取得前N条数据**:`SELECT * FROM (SELECT ROWNUM rn, t.* FROM table_name t ...
- **条件查询**:涵盖等号、不等于、范围、空值、逻辑运算符(AND、OR)、表达式优先级、IN、NOT、LIKE等操作符的使用。 - **排序数据**:实现单字段、多字段排序,以及自定义排序顺序。 #### 三、数据处理与函数...
Oracle作为一款流行的关系型数据库管理系统,其支持的SQL语句与标准SQL有很高的兼容性,但同时也包含了一些Oracle特有的扩展功能。 #### 二、什么是数据库 数据库是一种组织数据的方式,它允许用户通过各种操作对...
等式连接使用等号连接条件,不等式连接则使用不等号或其他比较运算符。子查询是嵌套在其他SQL语句中的查询,可以作为查询的一部分提供临时结果。 Oracle支持多种数据类型,如: - `NUMBER`:用于数值存储,可以存储...
- **用BREAK命令来对结果进行排列:** BREAK命令用于对查询结果按照指定列进行分组并显示。 - **用COMPUTE命令对结果进行格式化:** COMPUTE命令用于在查询结果中添加汇总行。 - **配置会话环境:** - **ARRAY...
用于将查询结果存入变量。必须至少有一条匹配记录,否则会引发`NO_DATA_FOUND`异常。你可以使用异常处理来捕获这种情况。 4. **IF 语句**: `IF 条件 THEN ... END IF;` 这用于条件判断,如果条件为真,则执行...
在Oracle数据库中,表连接是查询数据的关键操作,它允许我们合并来自多个表的数据。有多种连接方式,每种都有其特定的用途和效果。 1. **等连接(内连接)**:这是最常见的连接类型,返回两个表中满足连接条件的行...
- SELECT...INTO:用于将查询结果赋值给变量。 - EXECUTE IMMEDIATE:动态执行SQL或DDL语句。 #### 14. 流程控制语句 - IF...THEN...ELSIF...ELSE...END IF:条件判断语句。 - LOOP:无限循环直至遇到EXIT或LEAVE。...