私はこれを理解しています
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ビットに古いゴミを含めることができることを示しています。無視する必要があります