NULL vs Angka 0 vs String Kosong (""): Hati-hati, Dianggap Sama Padahal Beda Jauh!

Halo sobat mahasiswa IT! 👨‍💻👩‍💻

Siapa nih yang lagi ngerjain tugas Basis Data atau koding projekan, terus sering mikir gini:

"Ah, data ini belum ada isinya. Yaudah isi angka 0 aja deh, sama aja kan kayak kosong?"

Atau...

"NULL itu apa sih? Ribet amat. Anggap aja sama kayak string kosong ("")."

Stop! ✋ Kalau kamu masih punya mindset begitu, siap-siap kodinganmu bakal ketemu bug aneh di kemudian hari. Khususnya pas lagi mainan kalkulasi data.

Di mata manusia, "tidak punya uang" dan "punya uang Rp 0" itu rasanya sama-sama ngenes. Tapi di mata komputer (Database SQL dan Bahasa Pemrograman seperti PHP), NULL, Angka 0, dan String Kosong adalah tiga makhluk yang jauuuh berbeda.

Biar nggak bingung, mari kita pakai "Analogi Kotak Donat". 🍩

1. Angka Nol (The Value 0)

Bayangkan kamu punya sebuah kotak donat. Kamu buka kotaknya, dan di dalamnya... tidak ada donat. Tapi ada secarik kertas bertuliskan angka "0".

  • Status Kotak: ADA (Eksis).

  • Isinya: ADA, yaitu sebuah nilai numerik pasti: 0.

Di database, ini dipakai untuk kolom bertipe angka (INT, FLOAT). Contoh: Kolom jumlah_stok. Kalau stoknya habis, isinya angka 0. Artinya kita Tahu Pasti bahwa barangnya ada 0 biji.

2. String Kosong (The Empty String / "")

Bayangkan kamu punya kotak donat lagi. Kamu buka kotaknya, dan di dalamnya benar-benar kosong melompong. Hanya udara.

  • Status Kotak: ADA (Eksis).

  • Isinya: ADA (sebagai wadah), tapi panjang isinya nol karakter.

Di database, ini dipakai untuk kolom teks (VARCHAR, TEXT). Contoh: Kolom catatan_tambahan. User tidak menulis apa-apa, jadi yang tersimpan adalah string kosong "".

3. NULL (The "Unknown")

Nah, ini yang paling beda. Kalau NULL, artinya kamu nggak punya kotak donatnya sama sekali! Kotaknya belum dibeli, hilang, atau nggak tau ada di mana.

  • Status Kotak: TIDAK ADA / TIDAK DIKETAHUI.

  • Isinya: Tidak relevan dibahas, orang kotaknya aja nggak ada.

NULL di database itu bukan sebuah nilai. NULL adalah sebuah STATUS (state) yang artinya "Data ini belum tersedia", "Tidak diketahui", atau "Tidak relevan".

Contoh: Kolom tanggal_lulus pada data mahasiswa baru. Karena dia baru masuk, dia belum punya tanggal lulus. Maka isinya wajib NULL. Jangan diisi tanggal 0000-00-00 atau string kosong, karena itu menyesatkan.

Kenapa Salah Kaprah Ini Bahaya? (The Danger Zone) ⚠️

Ini bagian terpentingnya. Kesalahan fatal sering terjadi saat kamu melakukan Fungsi Agregat (Perhitungan) seperti Rata-rata (AVG).

Mari kita lihat studi kasus Nilai Mahasiswa ini:

  • Budi: Nilainya 100

  • Siti: Nilainya 50

  • Andi: Belum ikut ujian (Dosen belum input nilai).

Skenario Salah (Andi diisi angka 0): Data: 100, 50, 0. Rata-rata Kelas: (100 + 50 + 0) / 3 Mahasiswa = 50. Akibatnya: Nilai rata-rata kelas anjlok gara-gara Andi dianggap dapet nol.

Skenario Benar (Andi diisi NULL): Data: 100, 50, NULL. Di SQL, fungsi AVG() secara otomatis MENGABAIKAN data NULL. Rata-rata Kelas: (100 + 50) / 2 Mahasiswa (Andi nggak dihitung) = 75. Akibatnya: Rata-rata kelas akurat, mencerminkan nilai siswa yang sudah ujian saja.

Kesimpulan

Mulai sekarang, jangan sembarangan menukar-nukar ketiga hal ini ya!

  • Gunakan Angka 0 jika nilainya memang secara matematis adalah nol.

  • Gunakan String Kosong ("") jika datanya adalah teks, tapi user tidak mengetik apa-apa.

  • Gunakan NULL jika datanya benar-benar belum ada, belum diketahui, atau tidak relevan.

Paham bedanya = Kodingan lebih robust dan anti bug aneh! Selamat belajar! 🚀

Komentar