office交流网--QQ交流群号

Access培训群:792054000         Excel免费交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

Access学习必读--Null 空字符,空格 之区别 详细教程

2017-07-15 09:54:00
zstmtony
原创
18418
摘要:很多初学Access 或 Excel VBA 的网友,最容易混淆的就是 Access Null 空字符,空格,经常为这3者区别 想破脑袋,常常糊里糊涂,看似弄懂了,但又似懂非懂,如果不彻底明白它们之间的区别,就很容易混淆,对你后面的Access开发就有很大影响。
Null 空字符,空格 之区别 详细教程



很多网友在学习ACCESS或通过Excel VBA ADO连接Access数据库 处理过程中,对NULL这个概念总是会非常困惑,感觉很难理解


有时发现Access数据表或Sql Server数据表中明明有这条数据,但用条件就筛选不出来

或明明不需要筛选的结果却出现了。


其实这里主要是因为不了解Null和空字符的区别,这里就来总结一下,希望Access网友及Excel VBA连接数据库的网友有所帮助:


一、关键知识:

如果一个数据表中的字段允许为空的话
1.这个Access数据表的字段在新增记录时,如果还填入内容,那这个字段内容就是NULL
2. 如果填入了内容,但又手工把内容删除了,那它就是有内容了,但内容是空字符

二、即 NULL 与 "" 是有区别的
1.  Null 是完全没有值
2. "" 是有值 ,只是它的内容是 "" 空字符串


三、另 NULL 与 " " 空格也是有区别的
1. Null 是完全没有值
2. " " 是有值 ,它的内容是 " " 空格,占用一个字符


四、筛选与过滤 Where条件

所以如果你用 where 条件 Is Null 来筛选数据,就无法筛选出 内容为 "" 空字符串 和" " 空格的数据
反之,如果在Access中,您用 字段名="" 也无法筛选出 Null 和 " " 空格的数据


1. 如果想筛选Access数据表中 Null 和 "" 空字符串 的数据,可以使用条件 字段名 Is Null or 字段名=""

或者 直接 使用 nz(字段名)=""

2. 如果想筛选Access数据表中 Null 和 "" 空字符串 以及 " " 空格的数据,则可以使用 trim(nz(字段名))=""


五、Access 文本类型字段 数字类型字段日期型字段的 Null 处理方法的不同

1. 如果是  文本字段 ,则可以这样 nz(字段名)   或 nz(字段名,"")   来将其转换为 空字符

2. 如果是  数字字段 ,则可以这样 nz(字段名)   或 nz(字段名,0)   来将其转换为 空字符

3. 如果是  日期字段 ,则可以这样 nz(字段名)   或 nz(字段名,#1900/01/01#)   来将其转换 ,也可转换为你自己需要的值


六、在Access 或 Excel VBA 行业软件中应用的案例:

由于Access计算过程中,如果在查询中或Sql语句中的字段存在Null值,对此字段进行Sum求和,Avg平均数 等运算,都会导致结果为Null
而Null不同于0 或空字符,任何数与其一起计算,最后结果都是不知道及NUll,为了预防错误,需要对数据先进行预处理,可使用以下方法:
方法一、使用NZ,NZ(value,valueifnull),例子 NZ(数量,null) = 0 , 若某值为NUll, 则转换成0
方法二、利用iif, iif(数量 is null,0, 数量)


仓库:

方案一:用nz函数,如:现存数量=nz(入库总数量)-nz(出库总数量)
方案二:用iif函数,如:iif(入库数量=null,0,入库数量)

人事:

select nz([年龄],0) as [实际年龄] from 人事表

工资:

select nz([应发工资],0)-[应扣项] as [实发工资] from 工资表



七、如果想把Access 数据表中已有的Null 数据更新为 "" 空字符,可以使用以下更新Sql语句

update 表名 set [字段名]='' where [字段名] is null;

例如已经打开了ado连接对象cn

dim strSql as string
strSql="update Office交流网贴子表 set [字段名]='' where [字段名] is null;"
cn.Execute strSql  '执行sql语句

或直接
Currentdb.Execute  strSql  '执行sql语句


八、Sql Server中Null 值的处理方法

使用IsNull函数

select isnull(文章ID,0) from Office交流网文章表


九、数据表设计

如果是数字型 最好在设计表时最好将相关字段设置成不允许空,默认值为0,避免统计时数据出错

分享