web-dev-qa-db-ja.com

Oracle / SQL Serverのマイナスと例外の違い

MINUSは、最初のテーブルから要素を選択し、Oracleの2番目のSELECTステートメントによって返される行を削除するSQLセット操作です。また、SQL Serverでは、EXCEPTを使用して同じことを実行できます。

プロジェクトをOracleからSQL Serverに移行しているときに、違いに気付きました。最初の結果セットにレコードがない場合、マイナスは2番目のSELECTステートメントの結果セットをもたらします。ただし、SQL Serverでは、EXCEPTは何も返しません。その場合、私は何ができますか?プロジェクトを移行していますが、SQL Serverでも同じマイナス機能を実行したいと考えています。

ご協力いただきありがとうございます

19
jhash

Oracle MINUSとSQL Server EXCEPTの間に違いはありません。

彼らは同じことをすることを意図しています。

34
RichardTheKiwi

これにより、最初のクエリのany結果セットが確認され、結果がある場合を除き、実行されます。そうでない場合は、2番目のクエリのみを実行します。

IF EXISTS (SELECT NULL
           FROM ... <first query criteria>
           WHERE ...)
BEGIN
    SELECT ... <first query>
    EXCEPT 
    SELECT ... <second query>
END
ELSE
SELECT ... <second query>
1
JNK