如果值不为null,我想仅在内连接上包含比较。例如。我正在比较地址,一些地址具有相同的门牌号码街道地址和标签但具有不同的公寓号码,但是其他地址没有与它们相关联的公寓号码,因此值为空。这些价值观没有加入。
左外连接不起作用,因为我需要连接与具有空公寓值的值相关联的数据。有任何想法吗?
select * from address a
inner join ma_address ma
on a.number=ma.number
and a.street=ma.street
and a.tag=ma.tag
and a.apt=ma.apt
谢谢,
答案 0 :(得分:3)
这是因为在SQL中,NULL
不等于NULL
。为每个加入条件尝试类似的事情
(a.<col> = ma.<col> OR (a.<col> IS NULL AND ma.<col> IS NULL))
答案 1 :(得分:0)
值为NULL表示该值未知。值NULL与空值或零值不同。没有两个空值相等。两个空值之间或NULL与任何其他值之间的比较返回未知,因为每个NULL的值都是未知的
空值通常表示未知,不适用的数据,或稍后将添加数据的数据。例如,客户下订单时可能不知道客户的中间名首字母
以下是有关空值的信息:
1. 要在查询中测试空值,请在WHERE子句中使用IS NULL或IS NOT NULL 。
2.在SQL Server Management Studio代码编辑器中查看查询结果时,结果集中的空值显示为NULL
3.通过在INSERT或UPDATE语句中显式声明NULL,将列保留在INSERT语句之外,或者使用ALTER TABLE语句将新列添加到现有表时,可以将空值插入到列中。 />
4.空值不能用于区分表中的一行与表中另一行(如主键)所需的信息。
来源:http://technet.microsoft.com/en-us/library/ms191504(v=sql.105).aspx