【Oracle SQL*Plus】JOINでNULL同士を紐づける方法

雑学

備忘録になります。NULL同士はイコール条件に含む事が出来ないので、ORつけて、それぞれNULLである事の条件を加えてあげるとうまくいきます。

実施例

SQL> SELECT * FROM TABLE_A;

NAME             VAL1
---------- ----------
aaa              1111
bbb              2222
ccc              3333
                 4444

SQL> SELECT * FROM TABLE_B;

NAME             VAL2
---------- ----------
aaa                10
bbb                20
ccc                30
                   40

SQL> SELECT A.NAME,A.VAL1,B.VAL2
  2  FROM TABLE_A A
  3  JOIN TABLE_B B
  4  ON A.NAME = B.NAME;

NAME             VAL1       VAL2
---------- ---------- ----------
aaa              1111         10
bbb              2222         20
ccc              3333         30

SQL> SELECT A.NAME,A.VAL1,B.VAL2
  2  FROM TABLE_A A
  3  JOIN TABLE_B B
  4  ON A.NAME = B.NAME OR (A.NAME IS NULL AND B.NAME IS NULL);

NAME             VAL1       VAL2
---------- ---------- ----------
aaa              1111         10
bbb              2222         20
ccc              3333         30
                 4444         40

関連記事