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

4 Cara Mengganti NULL dengan Nilai Berbeda di MySQL

Di MySQL, terkadang Anda tidak ingin nilai NULL dikembalikan sebagai NULL . Terkadang Anda ingin nilai NULL dikembalikan dengan nilai yang berbeda, seperti “N/A”, “Not Applicable”, “None”, atau bahkan string kosong “”.

Untungnya ada beberapa cara untuk melakukan ini di MySQL.

Berikut empatnya:

  • IFNULL() fungsi
  • COALESCE() fungsi
  • IF() fungsi yang digabungkan dengan IS NULL (atau IS NOT NULL ) operator
  • CASE ekspresi dikombinasikan dengan IS NULL (atau IS NOT NULL ) operator

Contoh opsi ini ada di bawah.

Contoh Data

Pertama, mari ambil beberapa contoh data:

USE Solutions;
SELECT TaskCode
From Tasks;

Hasil:

+----------+
| TaskCode |
+----------+
| gar123   |
| NULL     |
| NULL     |
| dog456   |
| NULL     |
| cat789   |
+----------+

Jadi kami memiliki tiga nilai NULL dan tiga nilai non-NULL.

Fungsi IFNULL()

Mengingat namanya, ini mungkin opsi yang paling jelas untuk mengganti nilai NULL di MySQL. Fungsi ini pada dasarnya setara dengan ISNULL() di SQL Server.

IFNULL() fungsi memungkinkan Anda untuk memberikan dua argumen. Argumen pertama dikembalikan hanya jika bukan NULL. Jika NULL, maka argumen kedua akan dikembalikan.

Berikut ini contoh penggunaan IFNULL() terhadap kumpulan data sampel kami:

SELECT IFNULL(TaskCode, 'N/A') AS Result 
FROM Tasks;

Hasil:

+--------+
| Result |
+--------+
| gar123 |
| N/A    |
| N/A    |
| dog456 |
| N/A    |
| cat789 |
+--------+

Di sini, kami hanya mengganti nilai NULL dengan N/A .

Fungsi COALESCE()

Fungsi ini mirip dengan IFNULL() fungsi, tetapi sedikit berbeda. Fungsi ini mematuhi standar ANSI  SQL , dan diterapkan secara luas di berbagai RDBMS .

Cara kerjanya adalah, Anda memberikan argumen sebanyak yang Anda butuhkan. COALESCE() kemudian akan mengembalikan non-NULL . pertama nilai dalam daftar, atau NULL jika tidak ada non-NULL nilai.

Seperti ini:

SELECT COALESCE(TaskCode, 'N/A') AS Result 
FROM Tasks;

Hasil:

+--------+
| Result |
+--------+
| gar123 |
| N/A    |
| N/A    |
| dog456 |
| N/A    |
| cat789 |
+--------+

Jadi kita mendapatkan hasil yang sama persis seperti sebelumnya.

Namun, perbedaan dengan fungsi ini adalah, seperti yang disebutkan, Anda dapat memberikan daftar argumen. COALESCE() fungsi akan mengambil mana saja yang merupakan nilai non-NULL pertama.

Jadi misalnya, kita bisa menambahkan NULL sebagai argumen pertama dan tempatkan None sebelum N/A dan lihat apa yang terjadi:

SELECT COALESCE(NULL, TaskCode, 'None', 'N/A') AS Result 
FROM Tasks;

Hasil:

+--------+
| Result |
+--------+
| gar123 |
| None   |
| None   |
| dog456 |
| None   |
| cat789 |
+--------+

Itu melewatkan NULL pertama seperti yang diharapkan, kemudian melewatkan nilai NULL apa pun di TaskCode kolom, sebelum menetapkan None . N/A nilai tidak digunakan dalam kasus ini karena None didahulukan dan ini bukan nilai NULL.

Fungsi IF() Dikombinasikan dengan IS NULL/IS NOT NULL

IS NULL dan IS NOT NULL operator memungkinkan Anda untuk menguji nilai NULL, dan menyajikan nilai yang berbeda tergantung pada hasilnya.

Kita dapat menggunakan operator ini di dalam IF() fungsi, sehingga nilai non-NULL dikembalikan, dan nilai NULL diganti dengan nilai yang kita pilih.

Contoh:

SELECT IF(TaskCode IS NOT NULL, TaskCode, 'N/A') AS Result 
FROM Tasks;

Hasil:

+--------+
| Result |
+--------+
| gar123 |
| N/A    |
| N/A    |
| dog456 |
| N/A    |
| cat789 |
+--------+

Jadi hasil yang sama dengan IFNULL() dan COALESCE() fungsi.

Dan tentu saja, kita dapat menukar IS NOT NULL dengan IS NULL . Jika kita melakukannya, kita juga perlu menukar argumen berikut:

SELECT IF(TaskCode IS NULL, 'N/A', TaskCode) AS Result 
FROM Tasks;

Ekspresi KASUS Dikombinasikan dengan IS NULL/IS NOT NULL

Cara lain untuk melakukannya adalah dengan menggunakan CASE ekspresi:

SELECT 
    CASE 
        WHEN TaskCode IS NOT NULL THEN TaskCode 
        ELSE 'N/A' 
    END AS Result
FROM Tasks;

Hasil:

+--------+
| Result |
+--------+
| gar123 |
| N/A    |
| N/A    |
| dog456 |
| N/A    |
| cat789 |
+--------+

Seperti contoh sebelumnya, ini dapat ditulis ulang untuk menggunakan IS NULL bukannya IS NOT NULL :

SELECT 
    CASE 
        WHEN TaskCode IS NULL THEN 'N/A' 
        ELSE TaskCode 
    END AS Result
FROM Tasks;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Peringatan:mysqli_query() mengharapkan parameter 1 menjadi mysqli, sumber daya diberikan

  2. Pembatas di MySQL

  3. Bagaimana cara mendapatkan ID dari baris yang terakhir diperbarui di MySQL?

  4. Cara Mengimpor dan Mengekspor File CSV Menggunakan PHP dan MySQL

  5. Perbaiki "ERROR 1136 (21S01):Jumlah kolom tidak cocok dengan jumlah nilai pada baris 2" saat menggunakan Pernyataan VALUES di MySQL