oracle null 不等于,oracle判断null函数
在网上看到这样一个帖子。
含义:
问:什么是NULL?
答:当我们不知道具体数据是什么,也就是未知的时候,可以用NULL。我们称之为null。在ORACLE中,包含空值的表列的长度为零。
ORACLE允许任何数据类型的字段为空,但以下两种情况除外:
1.主键字段,
2.定义了NOT NULL限制的字段
描述:
1.相当于没有价值,默默无闻。
2.NULL不同于0、空字符串和空格。
3.空值加、减、乘、除,结果还是空。
4.NULL由NVL函数处理。
5.比较时使用关键字“is null”和“is not null”。
6.空值不能被索引,因此在查询过程中可能找不到一些合格的数据。在count(*)中,用nvl(列名,0)处理,然后检查。
7.排序时比其他数据大(默认情况下索引按降序排序,小大),所以空值总是排在最后。
用法:
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;
一个
-
一个
SQL select 1 from dual其中nvl(null,0)=nvl(null,0);
一个
-
一个
空值加、减、乘、除,结果还是空。
SQL select 1 null from dual
SQL select 1-dual中的null
SQL select 1 * null from dual
SQL select 1/null from dual;
查询记录。
注意:该记录在SQL语句中为空
将一些列设置为空值。
Update table1 set column 1=NULL,其中column 1不为NULL;
有一个商品销售表sale,这个表的结构是:
month char(6)-月
Sellnumber (10,2)-月销售额
创建销售表(月份字符(6),销售数量);
插入销售值( 200001 ,1000);
插入销售值( 200002 ,1100);
插入销售值( 200003 ,1200);
插入销售值( 200004 ,1300);
插入销售值( 200005 ,1400);
插入销售值( 200006 ,1500);
插入到销售值中(“200007”,1600);
插入销售值( 200101 ,1100);
插入销售值( 200202 ,1200);
插入销售值( 200301 ,1300);
插入销售值(“200008”,1000);
插入销售额(月)值( 200009 );(注意:该记录的卖出值为空)
提交;
总共输入12条记录。
SQL select * from sale where sell like % ;
月销售
- -
200001 1000
200002 1100
200003 1200
200004 1300
200005 1400
200006 1500
200007 1600
200101 1100
200202 1200
200301 1300
200008 1000
查询到11条记录。
结果描述:
查询结果显示,该SQL语句不查询具有空值的字段。
这时候就需要单独处理空字段了。
SQL select * from sale where sell like % 或sell为空;
SQL select * from sale where nvl(sell,0)like % ;
月销售
- -
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的空值的用法。我们最好熟悉它的惯例,以防发现的结果不正确。
我的看法其实很简单。空字符串“”就是null,所以上面的一切都是有效的,也很容易解释。
示例:[SQL select 1 from dual where null= ;未找到记录]
因为“”为空,则从dual中选择1,其中null=“”“”;该语句被解析为
从dual中选择1,其中null=null当然没有记录。其他相似之处
因此,从dual中选择1,其中“”为空;自然是有记录的。
http://www.iteye.com/topic/220760,转载这是