2010-05-09 76 views
-1

我有两个表加入与列加入空(比如emp_id)..如果emp_id在这两个表中有NULL值,怎么会SQL服务器甲骨文治疗? ?在SQL Server,Oracle和Informatica的

堂妹,我读到,当joining..if我处理空,Informatica的将忽略空行代-1,一个交叉联接会发生,我不想..

我能在这里做什么?

我不能完全忽略有NULL的行。

谢谢

+0

你想用NULL值做什么? – 2010-05-09 17:22:43

+0

只有id列有NULLs ..所有其他列都有值,我想要它们 – jest 2010-05-09 17:25:30

+0

是的,但你加入了什么?如果没有,请参阅下面的答案。 – 2010-05-09 17:31:12

回答

1

你不能加入colA = colB,并期望NULL比较等于。根据您的需求(也许假设某种表同步的需要下文)三种方法我能想到的是

  1. 使用COALESCE到位空的替代这样一个值-1,如果存在一个合适的值,它永远不能发生在您的实际数据中。 COALESCE(Table1.colA,-1) = COALESCE(Table2.colB,-1)
  2. 在所有连接的列上使用IS NULL和相等性检查。
  3. 使用INTERSECT(空值将被视为相等)。可能在派生表中,您可以重新加入。
+0

如果我替换-1会发生交叉连接吗? – jest 2010-05-09 17:23:45

+0

不,但效率很低,所以可能不适合大量的行。你能澄清你的情况为什么你需要这样做吗?我假设你将在你的连接中有一些非空的列。例如同步表的2个副本。如果不是这种情况,你会得到一个交叉连接是的。 – 2010-05-09 17:28:44

+0

我还没有面对这样的现实世界的情况..只是有疑问..所以,如果ID列的空值,你会做什么? – jest 2010-05-09 17:30:55