Office中国论坛/Access中国论坛

标题: 如何控制查询中的null值? [打印本页]

作者: avaya2002    时间: 2003-3-2 01:09
标题: 如何控制查询中的null值?
使用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值
如何控制这个问题呢?

欢迎讨论!!!
作者: Roadbeg    时间: 2003-3-2 02:22
用 where 子句,
即加上 where not isnull(ta.a) and not isnull(tb.b)
作者: 李寻欢    时间: 2003-3-2 02:36
用nz函数把Null值转换为零:

nz(a,0)

当a不为Null时,上面的等式等于a的值,当a=Null时,上面的等式等于0
作者: avaya2002    时间: 2003-3-3 17:57
标题: 解决了~~
其实,我是在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.....






欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3