空和null
发表在ASP.NET图书答疑 2010-07-20
是否精华
版块置顶:
我在参考贵书<<asp.net网络开发实例>>第6单后台查找用户功能.当我想查找此字段为空的记录时只能搜出字段为空而值为<null>搜索不出来?
问题2:在设计表时字段默认是可以为空,但当我通过网页添加数据时有的记录此字段的值显示为<NULL>,而有的什么也没有??
分享到:
精彩评论 1
大伟_mrkj
学分:0 LV1
2010-07-20
沙发
你好!
您的这个问题提的非常好,值得学习!
你可以试一试以下代码,关于空和null:
SELECT COUNT(*) FROM MyUser WHERE (Pass IS NULL) 
SELECT COUNT(*) FROM MyUser WHERE (Pass = NULL) 
这是2个不同的查询语句 
is null:表示这个数据库字段 什么数据也没有 
= null :表示这个数据库字段 有个"null"4个字节的数据,这个null不是系统默认的null,而是你添加的数据,系统默认的null跟你添加的null 是不同的!

[strong]真正的空值 (SQL 中的 NULL) [/strong]

等同“没有输入的值”,可以出现在大多数类型的字段中(如果没有别的约束条件),SQL server中表示为null,显示为,手工在SQL server企业管理器中输入的方法是按Ctrl+0。它在.NET中对应System.DBNull.Value。在T-SQL命令中,判断一个值是不是空值,要用“is null”而不是“= null”;处理空值有个ISNULL函数,它使用指定的值替换null。用ADO.NET从数据库得到的空值无法自动转化为空字符串或Nothing,须手动检测:如果得到System.DBNull.Value,则赋给数据对象Nothing或其它自定义的有意义的值。

 [strong]""和String.Empty [/strong]

空字符串(零长度字符串),只出现在字符串类型(如nvarchar)的字段中,SQL server中表示为’’,显示为空白,手工在SQL server企业管理器中输入时清空一个单元格即可。它在.NET中对应System.String.Empty,也就是我们常用的""。在T-SQL命令中处理空字符串和处理一般的字符串没什么区别。用ADO.NET从数据库得到的空字符串也和一般的字符串没什么区别。
 [strong]DBNULL [/strong]
DBNull在DotNet是单独的一个类型,该类只能存在唯一的实例,DBNULL.Value,DBNull唯一作用是可以表示数据库中的字符串,数字,或日期,为什么可以表示原因是DotNet储存这些数据的类(DataRow等)都是以 object 的形式来储存数据的。对于 DataRow , 它的 row[column] 返回的值永远不为 null , 要么就是具体的为column 的类型的值 。 要么就是 DBNull 。 所以 row[column].ToString() 这个写法永远不会在ToString那里发生NullReferenceException。DBNull 实现了 IConvertible 。但是,除了 ToString 是正常的外,其他的ToXXX都会抛出不能转换的错误。
 [strong]NULL [/strong]
null 关键字是表示不引用任何对象的空引用的文字值。null 是引用类型变量的默认值。那么也只有引用型的变量可以为NULL,如果 int i=null,的话,是不可以的,因为Int是值类型的。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照