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

SQL Server IF vs IIF():Apa Bedanya?

Siswa yang mempelajari bahasa pemrograman baru akan sering memulai pelajaran pertama mereka dengan IF pernyataan, di mana pernyataan mereka akan mengembalikan nilai hanya jika ekspresinya benar.

Mereka kemudian dapat melanjutkan ke IF... ELSE pernyataan, di mana mereka dapat menentukan nilai lain untuk dikembalikan jika ekspresinya salah. Jadi, kembalikan satu nilai jika ekspresi benar, dan nilai lain jika salah.

SQL Server tentu saja menyertakan IF... ELSE pernyataan di kotak alat T-SQL-nya.

SQL Server juga menyertakan IIF() function, yang melakukan hal serupa, tetapi dengan sintaks yang lebih ringkas.

Tapi ada beberapa perbedaan halus.

Perbedaan

Tabel berikut menguraikan perbedaan utama antara IF pernyataan dan IIF() fungsi.

IF IIF()
Ketik Pernyataan kontrol aliran. Fungsi logika.
Bagaimana hasilnya ditentukan? Anda menentukan pernyataan SQL atau blok pernyataan untuk dieksekusi. Anda menentukan nilai sebenarnya untuk dikembalikan.
Bersarang? Batas jumlah level bersarang bergantung pada memori yang tersedia. Hanya dapat disarangkan hingga level maksimum 10.
Bagaimana jika ekspresi mengembalikan false? ELSE kata kunci bersifat opsional (yaitu Anda dapat memilih apakah akan memenuhi hasil yang salah atau tidak). Memerlukan nilai benar dan salah (yaitu Anda harus memenuhi hasil yang salah).

IIF() function sebenarnya adalah cara singkat untuk menulis CASE ekspresi. Oleh karena itu, ia memiliki batasan yang sama dengan CASE ekspresi, yang berbeda dengan IF pernyataan.

Pernyataan JIKA

Berikut adalah IF pernyataan.

IF 1 < 2 SELECT 'True';

Hasil:

True

Dalam hal ini, ekspresi yang akan dievaluasi adalah 1 < 2 . Benar bahwa 1 kurang dari 2 jadi SELECT pernyataan dijalankan dan True dikembalikan.

Namun, jika ekspresinya salah, tidak akan terjadi apa-apa.

IF 1 > 2 SELECT 'True';

Hasil:

Commands completed successfully.

Semua SQL Server memberi tahu saya bahwa perintah berhasil diselesaikan. Tidak ada lagi yang dikembalikan, karena tidak ada hal lain yang ditentukan.

Pernyataan JIKA… ELSE

Dalam hal ini, kita dapat menambahkan ELSE opsional ke IF pernyataan, sehingga menjadi IF... ELSE pernyataan.

IF 1 > 2
       SELECT 'True';
ELSE 
       SELECT 'False';

Hasil:

False

Sekarang kita juga mendapatkan hasil ketika ekspresi salah.

Fungsi IIF()

IIF() fungsi memungkinkan kita untuk menulis logika yang sama menggunakan sintaks yang lebih ringkas.

Oleh karena itu, kita dapat menulis ulang contoh sebelumnya menjadi berikut ini:

SELECT IIF( 1 > 2, 'True', 'False' );

Hasil:

False

IIF() function pada dasarnya adalah cara yang lebih ringkas untuk melakukan IF... ELSE penyataan.

Sebenarnya, itu hanya sebagian benar. Seperti disebutkan, IIF() fungsi didasarkan pada CASE ekspresi, dan karena itu memiliki batasan yang sama dari CASE ekspresi (seperti hanya mampu membuat sarang ke level maksimum 10).

Oleh karena itu, pernyataan sebelumnya setara dengan berikut ini.

SELECT 
  CASE WHEN 1 > 2 THEN 'True'
    ELSE 'False'
  END;

Hasil:

False

Perhatikan bahwa IIF() memerlukan dua argumen, dan oleh karena itu, Anda diminta untuk menentukan nilai yang akan dikembalikan jika ekspresi menghasilkan false (bahkan jika Anda menetapkan NULL atau string kosong).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server BULK INSERT dari Linux

  2. Apa perbedaan antara menggunakan gabungan silang dan memberi koma di antara dua tabel?

  3. Keunggulan Kinerja SQL Server 2016 Enterprise Edition

  4. Permintaan ODBC pada MS SQL Server mengembalikan 255 karakter pertama hanya dalam PHP PDO (FreeTDS)

  5. Mengapa penyetelan kinerja SQL adalah keterampilan manajemen basis data yang paling penting untuk dimiliki