Soal 1Manakah berikut ini yang dengan benar menjelaskan IIF(kondisi, X, Y)?
Fungsi ④ — IF / IIF untuk Percabangan Satu Kondisi
Artikel keempat dari fungsi SQL. Mencabangkan sebuah nilai berdasarkan satu kondisi benar/salah dengan IF / IIF, bedanya dengan WHERE, mengkombinasikannya dengan LIKE dan AND, serta menumpuk ORDER BY / LIMIT — pada data staff dari CSV.
Data yang Dipakai di Artikel Ini — Tabel staff
Kita sudah membahas fungsi dalam tiga artikel sejauh ini; artikel ini dan dua berikutnya membahas cara mengganti apa yang ditampilkan berdasarkan sebuah kondisi. Dari nilai kolom yang sama, kamu bisa menempelkan label klasifikasi seperti "High" atau "Normal" tergantung apakah kondisinya terpenuhi, atau melipat beberapa nilai menjadi satu kolom hasil.
IF / IIF — Mengganti Nilai Berdasarkan Satu Kondisi
Fungsi paling dasar untuk mengganti nilai yang ditampilkan berdasarkan sebuah kondisi adalah IF / IIF. Sintaksnya ada di bawah, dan keduanya persis sama maknanya.
- MySQL: IF(kondisi, nilai jika benar, nilai jika salah)
- Konsol kursus ini / SQL Server: IIF(kondisi, nilai jika benar, nilai jika salah)
Konsol kursus ini tidak punya fungsi IF, jadi latihannya memakai IIF. Tidak seperti WHERE, ia tidak menyaring baris — hanya mengubah nilai kolom hasil, jadi kamu memakainya saat ingin "mempertahankan setiap baris tetapi mengubah label tampilan per nilai kolom".
-- 1) Cek cepat dengan literal
SELECT IIF(100 < 200, 'T', 'F'); -- 'T'
SELECT IIF(500 > 1000, 'T', 'F'); -- 'F'
-- 2) Memakai kolom — 'HQ' jika city Tokyo, selainnya 'Branch'
SELECT name, city,
IIF(city = 'Tokyo', 'HQ', 'Branch') AS office
FROM staff;
-- Referensi: di MySQL, pakai IF()
-- SELECT IF(city = 'Tokyo', 'HQ', 'Branch') FROM staff;
Perbedaan antara WHERE dan IF — Menghapus Baris vs Mengubah Nilai
WHERE dan IF sama-sama mengambil sebuah kondisi, tetapi efeknya pada hasil sama sekali berbeda.
- `WHERE`: hanya mempertahankan baris yang kondisinya TRUE, dan menghapus baris FALSE / NULL
- `IF` / `IIF`: mempertahankan setiap baris dan hanya menukar nilai kolom berdasarkan kondisi
Keduanya bisa dikombinasikan. Pola umumnya adalah "tampilkan hanya staff yang berbasis di Tokyo, dan bagi pay rank tiap orang menjadi High / Normal": pertama persempit baris dengan WHERE, lalu transformasi tampilan dengan IIF di daftar kolom SELECT.
-- Mengkombinasikan WHERE dan IIF
-- 1) Pakai WHERE untuk menyimpan hanya staff yang berbasis di Osaka
-- 2) Pakai IIF untuk mengklasifikasikan salary 6,000,000 atau lebih sebagai 'Senior'
SELECT name, salary,
IIF(salary >= 6000000, 'Senior', 'General') AS grade
FROM staff
WHERE city = 'Osaka';
Mengkombinasikan dengan LIKE dan AND, serta Menumpuk ORDER BY / LIMIT
Karena kondisi IIF menerima ekspresi yang sama dengan WHERE, kamu bisa mengkombinasikannya dengan LIKE (pencocokan pola) atau AND / OR (kondisi compound). Percabangan seperti "beri label Tanaka jika name memuat Tanaka" atau "ace jika 30+ dan berbasis di Tokyo" muat dalam satu baris.
AS alias pada kolom hasil juga bisa menjadi target `ORDER BY`, jadi mengurutkan berdasarkan kolom label yang dihasilkan IIF lalu membatasi baris dengan LIMIT adalah pola dasar untuk output laporan dalam praktik.
-- 1) IIF + LIKE: beri label 'Tanaka' jika surname-nya Tanaka
SELECT name,
IIF(name LIKE '%Tanaka', 'Tanaka', 'Other') AS surname_check
FROM staff;
-- 2) IIF + AND: kondisi compound pada setara-umur + city
SELECT name, birthday, city,
IIF(strftime('%Y', birthday) <= '1989' AND city = 'Osaka',
'Osaka senior', 'Other') AS tag
FROM staff;
Cek Pemahaman
Jawab setiap pertanyaan satu per satu.
Soal 2Manakah perbedaan yang benar antara WHERE dan IIF?
Soal 3Apa penulisan ulang yang benar saat menjalankan IF(salary >= 5000000, 'High', 'Normal') milik MySQL di konsol kursus ini?