いいえ、SQL Serverはスマートであり、EXISTSに使用されていることを認識しており、システムにNODATAを返します。
Quoth Microsoft:http://technet.microsoft.com/en-us/library/ms189259.aspx?ppud=4
EXISTSによって導入されたサブクエリの選択リストは、ほとんどの場合、アスタリスク(*)で構成されます。サブクエリで指定された条件を満たす行が存在するかどうかをテストしているだけなので、列名をリストする理由はありません。
自分自身を確認するには、次のコマンドを実行してみてください:
SELECT whatever
FROM yourtable
WHERE EXISTS( SELECT 1/0
FROM someothertable
WHERE a_valid_clause )
それが実際にSELECTリストで何かをしている場合、それはゼロによるdivエラーをスローします。そうではありません。
編集:注意:SQL標準は実際にこれについて話します。
ANSI SQL 1992標準、191ページhttp://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
3)ケース:
a)<select list>
の場合 「*」は単に<subquery>
に含まれています それはすぐに<exists predicate>
に含まれます 、次に<select list>
<value expression>
と同等です これは任意の<literal>
。