-1

我有两个表要加入一个列(比如emp_id)..如果emp_id两个表中都有空值,SQL ServerOracle将如何处理???

因为,我读到informatica在加入时会忽略 NULL 行..如果我处理空行,通过替换 -1,将发生我不想要的交叉连接..

我可以在这里做什么?

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

谢谢

4

2 回答 2

1

您不能加入 colA = colB 并期望 NULL 比较相等。根据您的需要(假设下面可能需要某种表同步)我能想到的三种方法是

  1. 如果存在永远不会在实际数据中出现的合适值,请使用 COALESCE 替换诸如 -1 之类的值来代替 null。COALESCE(Table1.colA,-1) = COALESCE(Table2.colB,-1)
  2. 对所有连接列同时使用 IS NULL 和相等性检查。
  3. 使用 INTERSECT(空值将被视为相等)。可能在您可以重新加入的派生表中。
于 2010-05-09T17:21:33.773 回答
1

也许你想要一个left outer join?见维基百科

以下是使用Oracle的方法

这是. _left outer join

于 2010-05-09T17:28:49.467 回答