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

Cara Menghindari Pembagian dengan Nol di MySQL

Masalah:

Anda ingin menghindari kesalahan pembagian dengan nol.

Contoh:

Basis data kami memiliki tabel bernama numbers dengan data pada kolom id , number_a , dan number_b .

id nomor_a nomor_b
1 4 0
2 57 -5
3 -7 56
4 -67 0
5 23 55
6 -8 -4

Mari kita bagi number_a dengan number_b dan tampilkan tabel dengan kolom baru, divided , dengan hasil pembagian.

Solusi 1:

SELECT
	*,
	number_a / NULLIF(number_b, 0) AS divided
FROM numbers;

Solusi 2:

SELECT
	*,
	CASE
WHEN number_b = 0
		THEN NULL
		ELSE number_a / number_b
	END AS divided
FROM numbers;

Hasilnya adalah:

id nomor_a nomor_b dibagi
1 4 0 NULL
2 57 -5 -11.4000
3 -7 56 -0.1250
4 -67 0 NULL
5 23 55 0,4182
6 -8 -4 2.000

Solusi 3:

SELECT
	*,
	number_a / number_b AS divided
FROM numbers
WHERE number_b != 0;

Hasilnya adalah:

id nomor_a nomor_b dibagi
2 57 -5 -11.4000
3 -7 56 -0.1250
5 23 55 0,4182
6 -8 -4 2.000

Diskusi:

Solusi pertama menggunakan NULLIF() fungsi, yang mengambil dua angka sebagai argumen. Ketika argumen pertama sama dengan argumen lainnya, fungsi mengembalikan NULL hasil dari. Jika number_b sama dengan nol, pembaginya adalah NULL , dan hasil pembagiannya adalah NULL .

Solusi kedua menggunakan CASE penyataan. Jika kondisi setelah WHEN kata kunci benar (dalam kasus kami, kondisinya adalah number_b = 0 ), kami menentukan bahwa NULL dikembalikan. Jika tidak, pembagian terjadi seperti biasa.

Solusi ketiga cukup menggunakan WHERE kondisi untuk menyaring baris di mana number_b adalah nol. Baris dengan number_b sama dengan nol hilang dari kumpulan hasil.


  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 Membuat Script dari Diagram di MySQL Workbench

  2. Bagaimana cara menggunakan CASE..WHEN yang benar di MySQL

  3. Perbedaan antara MySql dan MySqli di PHP

  4. Mengapa menggunakan pernyataan yang disiapkan mysql lebih aman daripada menggunakan fungsi escape umum?

  5. Konversi DateTime untuk MySQL menggunakan C#