Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Fungsi MySQL IF() Dijelaskan

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 (expr1 <> 0 dan expr1 BUKAN NULL ), IF() mengembalikan expr2 . Jika tidak, ia akan mengembalikan expr3 .

Jenis Pengembalian

  • Jika expr2 atau expr3 menghasilkan string, hasilnya adalah string. Jika expr2 dan expr3 keduanya adalah string dan salah satu string peka huruf besar/kecil, hasilnya peka huruf besar/kecil.
  • Jika expr2 atau expr3 menghasilkan nilai floating-point, hasilnya adalah nilai floating-point.
  • Jika expr2 atau expr3 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mereset kata sandi root MySQL

  2. Berikan Izin ke Pengguna MySQL di Linux melalui Command Line

  3. Bagaimana cara menggunakan LOAD_FILE untuk memuat file ke dalam gumpalan MySQL?

  4. Cara Menggunakan Peran yang Telah Berubah di MySQL 8.0

  5. Peringatan:mysqli_query():Tidak dapat mengambil mysqli