`

Oracle中null的使用详解

阅读更多
问:什么是NULL?
答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,
    我们称它为空,ORACLE中,含有空值的表列长度为零。
ORACLE允许任何一种数据类型的字段为空,除了以下两种情况:
1、主键字段(primary key),
2、定义时已经加了NOT NULL限制条件的字段

说明:
1、等价于没有任何值、是未知数。
2、NULL与0、空字符串、空格都不同。
3、对空值做加、减、乘、除等运算操作,结果仍为空。
4、NULL的处理使用NVL函数。
5、比较时使用关键字用“is null”和“is not null”。
6、空值不能被索引,所以查询时有些符合条件的数据可能查不出来,
   count(*)中,用nvl(列名,0)处理后再查。
7、排序时比其他数据都大(索引默认是降序排列,小→大),
   所以NULL值总是排在最后。

使用方法:
SQL> select 1 from dual where null=null;

没有查到记录
SQL> select 1 from dual where null='';
没有查到记录
SQL> select 1 from dual where ''='';

没有查到记录
SQL> select 1 from dual where null is null;
        1
---------
        1
SQL> select 1 from dual where nvl(null,0)=nvl(null,0);
        1
---------
        1
对空值做加、减、乘、除等运算操作,结果仍为空。
SQL> select 1+null from dual;
SQL> select 1-null from dual;
SQL> select 1*null from dual;
SQL> select 1/null from dual;
查询到一个记录.
注:这个记录就是SQL语句中的那个null
设置某些列为空值
uPDAte table1 set 列1=NULL where 列1 is not null;
现有一个商品销售表sale,表结构为:
month  char(6)  --月份
sellnumber(10,2) --月销售金额
create table sale (month char(6),sell number);
insert into sale values('200001',1000);
insert into sale values('200002',1100);
insert into sale values('200003',1200);
insert into sale values('200004',1300);
insert into sale values('200005',1400);
insert into sale values('200006',1500);
insert into sale values('200007',1600);
insert into sale values('200101',1100);
insert into sale values('200202',1200);
insert into sale values('200301',1300);
insert into sale values('200008',1000);
insert into sale(month) values('200009');
(注意:这条记录的sell值为空)
commit;
共输入12条记录
SQL> select * from sale where sell like '%';
MONTH       SELL
------ ---------
200001      1000
200002      1100
200003      1200
200004      1300
200005      1400
200006      1500
200007      1600
200101      1100
200202      1200
200301      1300
200008      1000
      
查询到11记录.
      
结果说明:
查询结果说明此SQL语句查询不出列值为NULL的字段
此时需对字段为NULL的情况另外处理。
SQL> select * from sale where sell like '%' or sell is null;
SQL> select * from sale where nvl(sell,0) like '%';

      
MONTH       SELL
------ ---------
200001      1000
200002      1100
200003      1200
200004      1300
200005      1400
200006      1500
200007      1600
200101      1100
200202      1200
200301      1300
200008      1000
200009
      
查询到12记录.
      
Oracle的空值就是这么的用法,我们最好熟悉它的约定,以防查出的结果不正确

引自:http://www.qqread.com/oracle/b782887105.html
分享到:
评论

相关推荐

    oracle null使用详解

    在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零

    oracle中的null_考试题目

    ### Oracle中的NULL知识点详解 #### 一、NULL基础概念与特性 在Oracle数据库中,`NULL`是一个特殊值,表示未知或未定义的状态。它既不是数字也不是字符,因此不能与其他任何类型的值进行比较。在SQL操作中,NULL的...

    Oracle中job的使用详解

    Oracle中job的使用详解 Oracle 中的 Job 是一个非常强大且灵活的功能,它允许开发者在数据库中执行计划任务,提高数据库的自动化程度和效率。那么,什么是 Oracle 中的 Job 呢? Oracle 中的 Job 是一个计划任务,...

    ORACLE_PROFILE的使用详解

    ### ORACLE_PROFILE的使用详解 #### 一、概述与目的 在Oracle数据库中,`PROFILE`是一种非常重要的机制,它可以用来控制和管理用户对数据库资源的使用情况。通过设置不同的资源限制,管理员能够确保数据库资源得到...

    ORACLE-TNS协议分析详解.doc

    ### ORACLE-TNS协议分析详解 #### 一、TNS介绍 TNS(Transparent Network Substrate)协议是Oracle数据库系统中用于实现客户端与服务端之间通信的重要协议之一。该协议支持多种传输方式,包括TCP/IP协议、SSL加密...

    Oracle数据库Sql语句详解大全.pptx

    本资源总结了 Oracle 数据库中 SQL 语句的详解大全,涵盖了 SELECT 查询、条件查询、运算符、空值处理、列别名、去重复行等多方面的知识点。 一、SELECT 查询 * 基本语法:SELECT 列名 > FROM 表名 > * 查询所有列...

    个人经验总结:Oracle数据库SCN号详解

    ### 个人经验总结:Oracle数据库SCN号详解 #### 一、引言 在Oracle数据库管理与维护过程中,了解SCN(System Change Number)的概念及其作用至关重要。SCN是Oracle数据库内部用于跟踪数据库状态变化的一个重要机制,...

    Oracle分区表详解

    ### Oracle 分区表详解 #### 一、Oracle 分区简介 Oracle 的分区技术是一种用于管理和优化超大型表和索引的有效手段。通过将一个大型的表或者索引分割成多个较小且可管理的部分,分区技术能够显著提升数据库的性能...

    oracle中 substring函数的使用

    ### Oracle中的SUBSTR函数详解 在Oracle数据库中,`SUBSTR`函数是一个非常重要的字符串处理函数,用于从指定的字符串中提取子串。该函数在实际应用中极为广泛,能够帮助用户灵活地处理数据,满足各种业务需求。下面...

    Oracle数据库字段类型详解

    ### Oracle数据库字段类型详解 #### 字符串类型 **Char** `CHAR` 数据类型用于存储固定长度的字符值。它可以包含1至2000个字符。如果没有明确规定长度,默认长度为1。当向`CHAR` 类型的字段赋值时,如果实际值...

    Oracle LOB 详解

    Oracle LOB 详解涵盖了 LOB 的基本概念、创建、存储、维护等方面,旨在帮助开发者和数据库管理员更好地理解和使用 LOB。 一、官方说明 Oracle 官方文档中提供了关于 LOB 的详细说明,包括 LOB 的存储、创建、维护...

    Oracle约束详解.pdf

    null 2 2 、 如果某个约束只作用单独的字段,即可以在列级定义约束;也可以在表 级定义约束。但是如果某个约束作用于多个字段,那必须在表级定义约 束,比如复合主键型就必须在表级定义约束。 3 3 、 在定义约束...

    Oracle数据控制语句详解

    Oracle 数据控制语句详解 在 Oracle 数据库管理系统中,SQL 语言主要分为四大部分:数据查询语言(DQL)、数据操纵语言(DML)、数据定义语言(DDL)以及数据控制语言(DCL)。本篇文章主要关注的是 DML 和 DCL ...

    Oracle SET命令参数详解

    - 描述:控制是否在输出中使用制表符来对齐列。 40. **TIME** - 默认值:OFF - 可选值:ON - 描述:控制是否显示SQL命令的执行时间。 41. **TIMING** - 默认值:OFF - 可选值:ON - 描述:控制是否...

    oracle表分区详解

    Oracle 数据库中的表分区是一种强大的工具,它可以显著提高大型表的性能和管理效率。通过合理的分区设计,可以实现数据的快速访问、高效管理和灵活的维护操作。根据实际应用场景选择合适的分区类型(范围分区、列表...

    oracle_存储过程详解

    - 处理`NULL`值时,要注意`NULL`与任何值比较都为`FALSE`,使用`IS NULL`或`IS NOT NULL`进行判断。 - Hibernate调用Oracle存储过程需要配置JDBC驱动,并使用`CallableStatement`来执行存储过程。 4. Java调用...

    Oracle数据库Sql语句详解大全.pdf

    ### Oracle数据库SQL语句详解——SELECT查询与条件查询 #### 第一章 SELECT查询 ##### 1.1 基本语法 SELECT语句是Oracle数据库中最常用的查询数据的方法之一,其基本语法结构如下: ```sql SELECT <列名> FROM ...

    Oracle数据库Sql语句详解大全

    - 掌握如何在查询中使用表达式和运算符。 - 了解如何处理空值。 - 学习如何给查询结果中的字段起别名。 - 熟悉如何进行列的连接操作。 **SELECT查询基本语法:** ```sql SELECT <列名> FROM <表名>; ``` **示例:...

Global site tag (gtag.js) - Google Analytics