Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara menulis ulang IS BERBEDA DARI dan TIDAK BERBEDA DARI?

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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menemukan urutan simpul dalam dokumen XML di SQL Server

  2. Apa Makna Pembelajaran Mesin bagi Profesional Basis Data

  3. Bagaimana cara menjalankan prosedur tersimpan sekali untuk setiap baris yang dikembalikan oleh kueri?

  4. SQL Server 2017 Langkah demi Langkah Instalasi -2

  5. Kueri yang Mengembalikan Daftar Hierarki Jenis Peristiwa Pemicu di SQL Server