Access学习必读--Null 空字符,空格 之区别 详细教程
- 2017-07-15 09:54:00
- zstmtony 原创
- 19680
很多网友在学习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,避免统计时数据出错
- office课程播放地址及课程明细
- Excel Word PPT Access VBA等Office技巧学习平台
- 将( .accdb) 文件格式数据库转换为早期版本(.mdb)的文件格式
- 将早期的数据库文件格式(.mdb)转换为 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 数据库引擎和访问连接引擎以阻止对远程数据库的访问(remote table)
- Access 365 /Access 2019 数据库中哪些函数功能和属性被沙箱模式阻止(如未启动宏时)
- Access Runtime(运行时)最全的下载(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些电脑无法正常注册的解决办法(regsvr32注册时卡住)
- office使用部分控件时提示“您没有使用该ActiveX控件许可的问题”的解决方法
- RTF文件(富文本格式)的一些解析
- Access树控件(treeview) 64位Office下出现横向滚动条不会自动定位的解决办法
- Access中国树控件 在win10电脑 节点行间距太小的解决办法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 树控件 ListView列表等64位MSCOMMCTL.OCX控件下载
- VBA或VB6调用WebService(直接Post方式)并解析返回的XML
- 早期PB程序连接Sqlserver出现错误
- MMC 不能打开文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版
- sql server连接不了的解决办法
- localhost与127.0.0.1区别
- Roych的浅谈数据库开发系列(Sql Server)
- sqlserver 自动备份对备份目录没有存取权限的解决办法
- 安装Sql server 2005 express 和SQLServer2005 Express版企业管理器 SQLServer2005_SSMSEE
联系人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |