数据库如何处理null 值

来源:互联网 发布:税友软件好用吗 编辑:程序博客网 时间:2024/06/05 11:21

数据库中null 值的含义:

在列中的值未知或缺失时,在关系数据库中使用空值。 空既不是空字符串(对于 character 或 datetime 数据类型),也不是零值(对于 numeric 数据类型)

null是一个常量,仅在数值和字符串类型的列中有意义,代表的是没有意义或者是不确定的值。

例如,学生选了课程,当成绩没有出来时grade字段的值应该为空;或者工资表中一个行政人员在课时补贴一栏的值为null,因为它不可能有课时补贴的收入


数据库中SQL处理null值:

1is null的结果为true

2用ORDER BY子句对查询结果按成绩排序:

若按升序排,成绩为空值的元组将最后显示,

若按降序排,成绩为空值的元组将最先显示。

3空值不能被索引,所以查询时有些符合条件的数据可能查不出来,count(*)中,用nvl(列名,0)处理后再查。 

4ANSI SQL-92 标准不支持 WHERE 子句中的 columnName = NULL。ANSI SQL-92 标准不支持 WHERE 子句中的 columnName = NULL。

oracle中处理null的相关博客:http://www.iteye.com/topic/454271


数据库中与null值的相关运算

1. 为空被视作未知,所以,对两个空值进行彼此比较,其结果不被视为相等。 在使用算术运算符的表达式中,如果任何操作数为空,结果也为空。

2.如果任何操作数或参数为空,则所有算术运算符(+、-、*、/、%)、位运算符(~、&、|)和大多数函数都返回空,只有属性 IsNull 除外。

3.逻辑运算

逻辑与(AND)算法

在and 逻辑表达式中,只要有F (假)其结果就为F,如果没有F,在AND逻辑表达式中有NULL的其结果就为Null,只有当两个条件都为T时,其结果才为T。

逻辑或(OR) 算法

在OR 逻辑表达式中,只要有T(真)其结果就为T,如果没有T,在OR 逻辑表达式中

有NULL的其结果就为NULL,只有当两个条件都为F时,其结果才为F。

逻辑非(NOT)算法

NOT T =F   NOT F=T    NOT NULL =NULL


数据库中null值转换

NVL空值转换函数。

因为与Null进行的算术运算均为NULL,所以有此函数。

NVL函数用于把一空值(NULL)转换成某一实际的值,格式如下:

NVL(表达式1,表达式2)

如果表达式1为空值(NULL),NVL返回值为表达式2的值,否则返回表达式1的值。表达式1和表达式2可以为数字型、字符型或日期型,但二者必须一致。例如:

对数字型: NVL(comm,0)

对字符型:NVL (TO_CHAR(comm),’NO Comment’)

对日期型:NVL(hiredate,’31-DEC-99’)

有经验的开发者经常用此函数来避免因空值(NULL )产生的错误。


其他null的相关知识:http://blog.csdn.net/perfect_db/article/details/11974737



0 0