1. ホーム
  2. sql

[解決済み] Oracle SQLのWHERE句における(+)記号の意味とは?[重複している]。

2023-02-11 18:42:22

質問

<余談
この質問には、すでにここで回答があります :
クローズド 11年前 .

重複の可能性あり。

オラクル (+) をWHERE句で使用することはできますか?

以下の簡略化したSQLクエリを、Oracleデータベース環境で考えてみましょう(Oracleに特化しているかどうかは分かりませんが)。

SELECT 
   t0.foo, t1.bar
FROM
   FIRST_TABLE t0, SECOND_TABLE t1
WHERE
   t0.ID (+) = t1.ID;

それは何かというと (+) の表記は WHERE という表記はあるのでしょうか? 無知な初心者の質問で申し訳ないのですが、今までは は極めて Google や StackOverflow で検索するのが難しいのです... 引用符を使用しても、検索エンジンは '+' 記号を見て、ある種の論理的指令として扱いたいようだからです。

どのように解決するのですか?

これは外部結合に対するOracle特有の表記法です。これは、t1からのすべての行を含み、t0に対応する行がない場合、t0カラムにNULLSを使用することを意味します。

標準SQLではこう書きます。

SELECT t0.foo, t1.bar
  FROM FIRST_TABLE t0
 RIGHT OUTER JOIN SECOND_TABLE t1;

オラクル は、ANSI ジョイン(LEFT/RIGHT JOIN)をサポートするバージョンでは、これらのジョインを使用しないことを推奨しています。 :

Oracle 社では、Oracle 結合演算子ではなく FROM 句 OUTER JOIN 構文を使用することを推奨しています。Oracle 結合演算子 (+) を使用する外部結合クエリには、次の規則と制限が適用されます [...]。