IS DISTINCT FROM
述語はSQL:1999の機能T151として導入され、その読み取り可能な否定、IS NOT DISTINCT FROM
、SQL:2003の機能T152として追加されました。これらの述語の目的は、2つの値を比較した結果が Trueであることを保証することです。 またはFalse 、決して不明 。
これらの述語は、同等のタイプ(行、配列、マルチセットを含む)で機能するため、正確にエミュレートするのはかなり複雑です。ただし、SQL Serverはこれらのタイプのほとんどをサポートしていないため、nullの引数/オペランドをチェックすることでかなり遠くまで到達できます。
-
a IS DISTINCT FROM b
次のように書き直すことができます:((a <> b OR a IS NULL OR b IS NULL) AND NOT (a IS NULL AND b IS NULL))
-
a IS NOT DISTINCT FROM b
次のように書き直すことができます:(NOT (a <> b OR a IS NULL OR b IS NULL) OR (a IS NULL AND b IS NULL))
FALSE OR NULL
を考慮できないため、あなた自身の答えは正しくありません。 不明と評価されます 。たとえば、NULL IS DISTINCT FROM NULL
Falseと評価する必要があります 。同様に、1 IS NOT DISTINCT FROM NULL
Falseと評価する必要があります 。どちらの場合も、式は不明になります 。