MySQL memiliki IF()
fungsi yang menyediakan cara mudah untuk melakukan operasi “JIKA/ELSE” sederhana.
Ini bekerja mirip dengan IF
dasar /ELSE
pernyataan, dalam hal itu memungkinkan kita untuk memeriksa suatu kondisi, dan mengembalikan hasil yang berbeda tergantung pada apakah itu benar atau tidak.
Lebih khusus lagi, jika argumen pertama ke IF()
fungsi benar, argumen kedua dikembalikan. Jika tidak benar, argumen ketiga dikembalikan.
Sintaks
IF(expr1,expr2,expr3)
Jika expr1
apakah TRUE
(
dan expr1
<> 0
), expr1
BUKAN NULLIF()
mengembalikan expr2
. Jika tidak, ia akan mengembalikan expr3
.
Jenis Pengembalian
- Jika
expr2
atauexpr3
menghasilkan string, hasilnya adalah string. Jikaexpr2
danexpr3
keduanya adalah string dan salah satu string peka huruf besar/kecil, hasilnya peka huruf besar/kecil. - Jika
expr2
atauexpr3
menghasilkan nilai floating-point, hasilnya adalah nilai floating-point. - Jika
expr2
atauexpr3
menghasilkan bilangan bulat, hasilnya adalah bilangan bulat.
Contoh
Berikut adalah contoh sederhana untuk mendemonstrasikan cara kerjanya:
SELECT IF( 1 > 2, 'Yes', 'No' );
Hasil:
No
Di sini, kami memeriksa apakah 1 lebih besar dari 2. Bukan, sehingga argumen ketiga dikembalikan.
Inilah yang terjadi jika ekspresi pertama benar:
SELECT IF( 2 > 1, 'Yes', 'No' );
Hasil:
Yes
Contoh Basis Data
Berikut adalah contoh yang menggunakan IF()
fungsi saat menanyakan database:
SELECT
Name,
Population,
IF( Population > 10000000, 'Big', 'Small' ) AS "Big/Small"
FROM Country
ORDER BY Name ASC
LIMIT 10;
Hasil:
+---------------------+------------+-----------+ | Name | Population | Big/Small | +---------------------+------------+-----------+ | Afghanistan | 22720000 | Big | | Albania | 3401200 | Small | | Algeria | 31471000 | Big | | American Samoa | 68000 | Small | | Andorra | 78000 | Small | | Angola | 12878000 | Big | | Anguilla | 8000 | Small | | Antarctica | 0 | Small | | Antigua and Barbuda | 68000 | Small | | Argentina | 37032000 | Big | +---------------------+------------+-----------+
Bersarang IF()
Fungsi
Dimungkinkan untuk membuat sarang IF()
berfungsi untuk menyediakan lebih dari sekedar hasil biner.
Misalnya:
SELECT
Name,
Population,
IF(
Population > 10000000,
IF( Population > 100000000, 'REALLY Big', 'Big' ),
'Small'
) AS "Size"
FROM Country
WHERE Region = 'Southern and Central Asia'
ORDER BY Population DESC;
Hasil:
+--------------+------------+------------+ | Name | Population | Size | +--------------+------------+------------+ | India | 1013662000 | REALLY Big | | Pakistan | 156483000 | REALLY Big | | Bangladesh | 129155000 | REALLY Big | | Iran | 67702000 | Big | | Uzbekistan | 24318000 | Big | | Nepal | 23930000 | Big | | Afghanistan | 22720000 | Big | | Sri Lanka | 18827000 | Big | | Kazakstan | 16223000 | Big | | Tajikistan | 6188000 | Small | | Kyrgyzstan | 4699000 | Small | | Turkmenistan | 4459000 | Small | | Bhutan | 2124000 | Small | | Maldives | 286000 | Small | +--------------+------------+------------+
Nol dan Nol
Jika ekspresi pertama adalah NULL
atau 0
, maka itu salah, dan nilai kedua dikembalikan:
SELECT
IF( 1, 'True', 'False' ) AS "1",
IF( null, 'True', 'False' ) AS "Null",
IF( 0, 'True', 'False' ) AS "Zero";
Hasil:
+------+-------+-------+ | 1 | Null | Zero | +------+-------+-------+ | True | False | False | +------+-------+-------+
Di sini, kolom pertama benar karena diselesaikan ke 1. Dua kolom lainnya mengembalikan argumen kedua, karena argumen pertama mereka null
dan 0
masing-masing.
Berikut ini contoh database:
SELECT
Name,
GNPOld,
IF( GNPOld, GNPOld, 'None' )
FROM Country
ORDER BY Name ASC
LIMIT 10;
Hasil:
+---------------------+-----------+------------------------------+ | Name | GNPOld | IF( GNPOld, GNPOld, 'None' ) | +---------------------+-----------+------------------------------+ | Afghanistan | NULL | None | | Albania | 2500.00 | 2500.00 | | Algeria | 46966.00 | 46966.00 | | American Samoa | NULL | None | | Andorra | NULL | None | | Angola | 7984.00 | 7984.00 | | Anguilla | NULL | None | | Antarctica | NULL | None | | Antigua and Barbuda | 584.00 | 584.00 | | Argentina | 323310.00 | 323310.00 | +---------------------+-----------+------------------------------+
Meskipun dalam kasus ini hasil yang sama dapat dicapai dengan kode yang sedikit lebih sedikit menggunakan IFNULL()
fungsi atau bahkan COALESCE()
fungsi.