CREATE TABLE T1 (ID INT ,ID1 INT); INSERT INTO T1 VALUES(1,NULL); INSERT INTO T1 VALUES(NULL,NULL); INSERT INTO T1 VALUES(2,2); COMMIT; --实际上有三条记录,包括两个字段都为空的记录 admin@ORCL> SELECT * FROM T1; ID ID1 ---------- ---------- 1 NULL 2 2 NULL NULL admin@ORCL> SELECT COUNT(*) FROM T1; COUNT(*) ---------- 3 admin@ORCL> SELECT COUNT(ID) FROM T1; COUNT(ID) ---------- 2 admin@ORCL> SELECT COUNT(ID1) FROM T1; COUNT(ID1) ---------- 1 --空值的SUM测试 admin@ORCL> SELECT SUM(ID) FROM T1;--SUM值不考虑空值 SUM(ID) ---------- 3 admin@ORCL> SELECT AVG(ID) FROM T1;--AVG只除以了非为空的记录条数 AVG(ID) ---------- 1.5 admin@ORCL> SELECT SUM(ID1) FROM T1; SUM(ID1) ---------- 2 admin@ORCL> SELECT AVG(ID1) FROM T1;--avg只除以了非空的记录条数 AVG(ID1) ---------- 2 --相加测试,NULL+NOT NULL VALUE = NULL admin@ORCL> SELECT ID+ID1 FROM T1; ID+ID1 ---------- NULL 4 --MAX与MIN测试,最大值和最小值也不包含空 admin@ORCL> select max(ID) from t1; MAX(ID) ---------- 2 admin@ORCL> select min(ID) from t1; MIN(ID) ---------- 1 --排序测试 select * from t1 order by id; admin@ORCL> select * from t1 order by id;--默认是升序,可以看出NULL 默认最大 ID ID1 ---------- ---------- 1 NULL 2 2 NULL NULL admin@ORCL> select * from t1 order by id1; ID ID1 ---------- ---------- 2 2 NULL NULL 1 NULL --加上 NULLS first,将空值设为第一位 admin@ORCL> select * from t1 order by id nulls first; ID ID1 ---------- ---------- 1 2 2 --distinct会包含null admin@ORCL> select distinct id from t1; ID ---------- 1 2 --1.NULL值对IN的查询无太影响 SELECT * FROM PRODUCT_BASE WHERE PRODUCT_CODE IN (SELECT 'C10104107000015' FROM DUAL UNION ALL SELECT NULL FROM DUAL); --2.NULL值对NOT IN的查询有影响,会导致全部数据查询不出来 SELECT * FROM PRODUCT_BASE WHERE PRODUCT_CODE IN (SELECT 'C10104107000015' FROM DUAL UNION ALL SELECT NULL FROM DUAL); --结论 in与not in 会跟括号里面的值进行比较是否相等从而得出判断结果,而在oracle中null 进行比较都是返回false. --3.EXIST值对NULL的查询无影响 SELECT * FROM PRODUCT_BASE WHERE EXISTS (SELECT 1 FROM (SELECT 'C10104107000015' AS ID FROM DUAL UNION ALL SELECT NULL FROM DUAL) T WHERE T.ID = PRODUCT_CODE); --3.NOT EXIST值对NULL的查询无影响 SELECT * FROM PRODUCT_BASE WHERE NOT EXISTS (SELECT 1 FROM (SELECT 'C10104107000015' AS ID FROM DUAL UNION ALL SELECT NULL FROM DUAL) T WHERE T.ID = PRODUCT_CODE); --结论 --exists与not exists相当于一种逻辑判断,exists 的本质就是返回一个布尔值, --exists测试关联子查询是否有数据返回,如果有至少一行返回的话则exists判断为真返回true, --not exists判断关联子查询是否没有数据返回, 如果没有数据返回则判断为真,返回true。 以下为踩过的坑。。。。。 1.merge 关联时, null与null关联不上, 导致数据都被insert进去,而非更新。 如下示例,A表的xx1与b表的xx1都为null,关联不上。 merge into A using(select * from B) on a.id = B.id and a.xx1 = b.xx1 when matched then when not matched then insert 2.merge关联后,两个字段相加null+数字仍然为空。具体场景为计算累加值,而上日无此维度累加值且未设置默认值为0,导致计算结果为null。 merge into A using (select * from b) b on a.id = b.id when matched then update set A.amount = A.amount + B.amount(null) 3.数据清理时, 通过create table 再drop 原表rename的方式清理,取日期大于某个值的数据(业务上要求要包括null记录)。 create table T select * from source where source.date >= sysdate - 90;
相关推荐
处理空值是数据库操作中常见的需求,特别是在数据查询、聚合计算和数据清洗等场景下。Oracle提供了多种方法来处理空值,包括使用NVL、NVL2、COALESCE函数,以及CASE和DECODE语句。下面将详细介绍这些方法及其应用...
总结,Oracle中的空值处理需要理解其特性和行为,并合理运用NVL等函数进行转换。同时,通过创建适当的索引可以进一步提升含有空值字段的查询性能。在数据库设计时,应谨慎考虑是否允许字段为空,以及如何处理可能...
Oracle数据库是关系型数据库管理系统的一种,其在处理空值(NULL)方面有着独特的规则和应用方法。空值在数据库中通常表示未知、不适用或无意义的数据,它不是一个具体的数值,而是一个标识,表明某个属性的值缺失。...
### 韩顺平Oracle课堂资料总结 #### 一、Oracle权限管理与操作 ##### 权限概述 在Oracle数据库中,权限管理是确保数据安全的重要手段之一。权限分为系统权限(System Privileges)和对象权限(Object Privileges)...
"SYBASE iq与ORACLE使用分析函数计算同期值及常用计算函数使用" 本资源摘要信息主要介绍了SYBASE iq和ORACLE中使用分析函数计算同期值和常用计算函数的使用方法。文章涵盖了同期值的计算、累计及同期累计值的计算、...
### Oracle数据库学习总结知识点 #### 1. 数据表的基本操作 - **创建表**: 使用 `CREATE TABLE` 语句创建新的表。例如:`CREATE TABLE student (name VARCHAR2(20), age NUMBER(3));` - **插入记录**: 使用 `...
Oracle SQL 中判断值为空或 Null 的方法有多种,在本文中,我们将介绍 Oracle 和 SQL Server 中的空值判断方法。 Oracle 中的空值判断 在 Oracle 中,可以使用 `NVL` 函数来判断值为空或 Null。`NVL` 函数的语法...
在Oracle数据库中,空值(NULL)是一种特殊的数据状态,表示某个字段的值未知或不存在。这个概念在软件开发,尤其是涉及数据库管理的领域里至关重要。Oracle允许任何数据类型的列出现空值,只要该列没有被非空约束...
Oracle数据库是世界上最广泛使用的数据库管理系统之一,主要用于存储和管理企业级的数据。以下是对Oracle的一些关键知识点的详细说明: 1. **登陆与用户管理**: - 使用`sqlplus`命令行工具,通过`conn 用户名/...
3. Index skip scan:对于范围查询,Oracle可以跳过部分索引节点,提高查询效率。 四、索引使用策略 1. 适当索引:为经常出现在WHERE子句中的列创建索引,避免对更新频繁的列建索引。 2. 分析与调整:定期运行`...
如果A列没有空值,但B列允许空值,那么在计算如`min(B)`这样的聚合函数时,Oracle可能不会使用这个复合索引。原因是,由于B列可以为空,索引中可能不存在某些记录的B值,而计算最小值时必须检查所有记录以确认是否有...
你是否也为在Oracle里如何实现NULL的比较而犯愁呢?
### Oracle学习总结 #### SQL基础语法 1. **数据定义语言(DDL)** - **创建表**:`CREATE TABLE table_name (column_name datatype constraints,...);` - `NOT NULL`:指定列不允许有空值。 - `UNIQUE`:指定列...
Oracle 基本知识总结 Oracle 是一种关系型数据库管理系统,广泛应用于各种行业。这里对 Oracle 基本知识进行总结,包括用户管理、归档模式、版本查看、闪回区信息、表空间管理、Spool 命令、脚本执行、登录方法等。...
"oracle class12.jar nls_charset12.jar存储过程接收数组空值"这个标题所描述的,就是关于在Oracle 11g中解决这个问题的具体实践。 首先,`class12.jar`和`nls_charset12.jar`是Oracle数据库的Java存根库,它们包含...
以下是对Oracle建表命令和相关约束的详细总结: 1. **主键(Primary Key)**: 主键是用来唯一标识表中每一条记录的关键字段,不允许有重复值且不能为空。在Oracle中,可以使用`PRIMARY KEY`关键字来创建主键约束...
### Oracle 行列转换知识点详解 #### 一、概述 在数据库操作中,行列转换是一项非常实用的功能,尤其是在处理报表数据或需要特定格式输出时。本文档将详细讲解Oracle数据库中的行列转换方法,并通过具体实例来说明...
空值的判断,空值的过滤,补全空值.ipynb
MATLAB作为一种强大的数值计算和数据分析工具,提供了丰富的函数和方法来处理数据中的空值(NaN,Not a Number)。本教程将围绕“matlab 空值预处理”这一主题,详细介绍如何使用MATLAB处理数值型和字符型数据中的...
数据查询;;空值比较;... 在使用算术运算符+、-时,如果参与运算的值出现空值,则导致计算结果为空值。 SELECT 图书编号,数量+10 FROM book; ;空值的概念 空值比较的方法 空值在数据运算中的特殊情况 ;谢谢