IS DISTINCT FROM
predikat diperkenalkan sebagai fitur T151 dari SQL:1999, dan negasinya yang dapat dibaca, IS NOT DISTINCT FROM
, telah ditambahkan sebagai fitur T152 dari SQL:2003. Maksud dari predikat ini adalah untuk menjamin bahwa hasil dari membandingkan dua nilai adalah Benar atau Salah , tidak pernah Tidak diketahui .
Predikat ini bekerja dengan jenis yang sebanding (termasuk baris, array, dan multiset) sehingga agak rumit untuk menirunya dengan tepat. Namun, SQL Server tidak mendukung sebagian besar jenis ini, jadi kita bisa mendapatkan cukup jauh dengan memeriksa argumen/operan nol:
-
a IS DISTINCT FROM b
dapat ditulis ulang sebagai:((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
dapat ditulis ulang sebagai:(NOT (a <> b OR a IS NULL OR b IS NULL) OR (a IS NULL AND b IS NULL))
Jawaban Anda sendiri salah karena gagal mempertimbangkan bahwa FALSE OR NULL
mengevaluasi ke Tidak Diketahui . Misalnya, NULL IS DISTINCT FROM NULL
harus mengevaluasi ke Salah . Demikian pula, 1 IS NOT DISTINCT FROM NULL
harus mengevaluasi ke Salah . Dalam kedua kasus, ekspresi Anda menghasilkan Tidak Diketahui .