设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 778|回复: 3
打印 上一主题 下一主题

[查询] 如何控制查询中的null值?

[复制链接]
跳转到指定楼层
1#
发表于 2003-3-2 01:09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用right join On时往往会在产生的记录集中存在空值
例如
select ta.a ,tb.b ,ta.a+tb.b as ab from ta right join tb
On ta.c=tb.c
结果往往会是
    a     b    ab
    1     2     3
          2      
    2           
   ........
在第二行和第三行因为出现了null值,所以ab也会是null值
如何控制这个问题呢?

欢迎讨论!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2003-3-2 02:22:00 | 只看该作者
用 where 子句,
即加上 where not isnull(ta.a) and not isnull(tb.b)
3#
发表于 2003-3-2 02:36:00 | 只看该作者
用nz函数把Null值转换为零:

nz(a,0)

当a不为Null时,上面的等式等于a的值,当a=Null时,上面的等式等于0
4#
 楼主| 发表于 2003-3-3 17:57:00 | 只看该作者

解决了~~

其实,我是在access项目中写一个存储过程时遇到这个问题的
1.nz()在sqlserver中不支持
2.发现isnull()在sqlserver中用法不一样,从而解决了这个问题

ISNULL
使用指定的替换值替换 NULL。

语法
ISNULL ( check_expression , replacement_value )

参数
check_expression

将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。

replacement_value

在 check_expression 为 NULL时将返回的表达式。replacement_value 必须与 check_expresssion 具有相同的类型。

具体的sql写法:
select isnull(ta.a,0),isnull(tb.b,0),isnull(ta.a,0)+isnull(tb.b,0) as ab from.....

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-25 21:41 , Processed in 0.095057 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表