در اوراکل یک عملگر با نام outer join operator وجود دارد که نماد آن (+) است.
برای اینکه بخواهیم تمام رکوردهای جدول t1 را داشته باشیم می توانیم آن را در where clause کنار فیلد جدول t2 بگذاریم. یعنی عبارات زیر یک معنی یکسان و خروجی یکسان برای جداول تستی تعریف شده در پاسخ https://javabyab.com/1002 دارند:
SELECT *
FROM test_mohi t1 LEFT JOIN test_mohi_2 t2 ON t1.first_field = t2.first_field;
SELECT *
FROM test_mohi t1, test_mohi_2 t2
WHERE t1.first_field = t2.first_field(+);
FIRST_FIELD SECOUND_FIELD THIRD_ FIRST_FIELD_1 SECOUND_FIELD_1 THIRD__1
----------- ------------- ---------- ------------- --------------- ----------
1 2 4 1 2 3
1 1 5 1 2 3
2 0 10
2 2 5
2 1 6
5 rows selected.
لازم به ذکر است که این عملگر برای FULL JOIN معادل ندارد. یعنی کوئری زیر اشتباه است:
SELECT *
FROM test_mohi t1, test_mohi_2 t2
WHERE t1.first_field(+) = t2.first_field(+)
*
Error at line 3
ORA-01468: a predicate may reference only one outer-joined table