私はこれを理解しています
IF EXISTS(SELECT NULL) PRINT 'TRUE';
TRUE結局のところSQLServerの値であるため、常に出力NULLされますが、なぜこれが
IF EXISTS(SELECT NULL) PRINT 'TRUE'
TRUEサブクエリがエラーを引き起こし、EXISTS常に存在をチェックするので、どうしてこれが可能になるので、印刷します。
私はこれを理解しています
IF EXISTS(SELECT NULL) PRINT 'TRUE';
TRUE結局のところSQLServerの値であるため、常に出力NULLされますが、なぜこれが
IF EXISTS(SELECT NULL) PRINT 'TRUE'
TRUEサブクエリがエラーを引き起こし、EXISTS常に存在をチェックするので、どうしてこれが可能になるので、印刷します。
質問にコピー/貼り付けエラーがあるために推測します
EXISTSは値をチェックしません。行をチェックします。
SELECTが1つの行を与えるので、これらは有効です。
IF EXISTS(SELECT 1/0) PRINT 'TRUE'
IF EXISTS(SELECT NULL) PRINT 'TRUE';
IF EXISTS(SELECT CAST('fish' AS int)) PRINT 'TRUE';
説明するために、ANSI-92 SQLを見て、「」を検索しますQuery expressions 191。
これはケース3a(私の太字)です:
<select list> "*"がに含まれているだけで、<subquery>すぐにに含まれている場合、<exists predicate>は任意の。<select list>に相当します。<value expression><literal>
したがって、これは、EXISTSビットに古いゴミを含めることができることを示しています。無視する必要があります