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).