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

MySQL IFNULL () Dijelaskan

MySQL memiliki IFNULL() fungsi yang memungkinkan kita mengganti nilai NULL dengan nilai lain dengan mudah.

Sintaks

IFNULL(expr1,expr2)

Jika expr1 bukan NULL , IFNULL() mengembalikan expr1 ; jika tidak, ia mengembalikan expr2 .

Contoh

Berikut adalah contoh dasar yang menggunakan NULL konstan:

SELECT IFNULL( null, 'n/a' );

Hasil:

n/a

Dalam hal ini, saya menggunakan IFNULL() untuk mengganti nilai NULL dengan string n/a .

Inilah yang terjadi ketika argumen pertama bukan NULL :

SELECT IFNULL( 'Cow', 'n/a' );

Hasil:

Cow

Dalam hal ini, argumen pertama dikembalikan, karena bukan NULL .

Contoh Basis Data

Misalkan kita menjalankan kueri berikut:

SELECT
    PetName,
    DOB
FROM Pets;

Hasil:

+---------+------------+
| PetName | DOB        |
+---------+------------+
| Fluffy  | 2020-11-20 |
| Fetch   | 2019-08-16 |
| Scratch | 2018-10-01 |
| Wag     | 2020-03-15 |
| Tweet   | 2020-11-28 |
| Fluffy  | 2020-09-17 |
| Bark    | NULL       |
| Meow    | NULL       |
| Woof    | 2020-10-03 |
| Ears    | 2022-01-11 |
+---------+------------+

Kita dapat melihat bahwa dua baris memiliki nilai NULL di kolom DOB.

Dalam kueri berikut, kami menggunakan IFNULL() untuk mengganti nilai NULL dengan nilai yang lebih berarti bagi pembaca:

SELECT
    PetName,
    IFNULL( DOB, 'None supplied' )
FROM Pets;

Hasil:

+---------+--------------------------------+
| PetName | IFNULL( DOB, 'None supplied' ) |
+---------+--------------------------------+
| Fluffy  | 2020-11-20                     |
| Fetch   | 2019-08-16                     |
| Scratch | 2018-10-01                     |
| Wag     | 2020-03-15                     |
| Tweet   | 2020-11-28                     |
| Fluffy  | 2020-09-17                     |
| Bark    | None supplied                  |
| Meow    | None supplied                  |
| Woof    | 2020-10-03                     |
| Ears    | 2022-01-11                     |
+---------+--------------------------------+

Ekspresi

Nilai saat ini dari argumen pertama dievaluasi. Oleh karena itu, jika kita memberikan ekspresi seperti berikut:

SELECT IFNULL( 2 * 5, 0 );

Kami mendapatkan ini:

10

Jadi, kami tidak mendapatkan 2 * 5 bagian. Kami mendapatkan hasil dari ekspresi itu (yang dalam hal ini adalah 10 ).

Hal yang sama berlaku ketika hasil ekspresi adalah NULL :

SELECT IFNULL( 2 / 0, 0 );

Kami mendapatkan ini:

0.0000

Itu membayar untuk berhati-hati meskipun. Nol adalah sebuah nilai. NULL tidak.

Dalam contoh di atas saya mengembalikan nol ketika ada nilai NULL, tetapi ini bisa menyesatkan atau bahkan sepenuhnya salah. Bayangkan jika kita membagi harga, dan hasilnya adalah harga nol. Oke, jika kita membagi harga dengan nol, mungkin ada hal lain yang salah, tapi saya yakin Anda mengerti maksud saya.

Bagaimanapun, biasanya lebih baik menggunakan nilai yang lebih bermakna yang menyampaikan kepada pembaca bahwa tidak ada nilai.

Contoh:

SELECT IFNULL( 2 / 0, 'No value' );

Hasil:

No value

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL pilih yang berbeda

  2. Fungsi MySQL GREATEST() – Temukan Argumen Terbesar dalam Daftar Argumen

  3. Mana yang lebih cepat:beberapa INSERT tunggal atau satu INSERT beberapa baris?

  4. Fungsi String MySQL (Daftar Lengkap)

  5. Klausa INNER JOIN ON vs WHERE