Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengambil Baris dengan Berkesan dengan Nilai NULL dalam MySQL?

Bagaimanakah Saya Boleh Mengambil Baris dengan Berkesan dengan Nilai NULL dalam MySQL?

DDD
DDDasal
2024-12-25 04:52:11338semak imbas

How Can I Effectively Retrieve Rows with NULL Values in MySQL?

Memahami Nilai Null dalam MySQL

Dalam MySQL, mungkin sukar untuk mendapatkan baris yang mengandungi nilai nol menggunakan operator perbandingan standard (=). Anomali ini berpunca daripada sifat unik nilai nol dalam SQL.

Cabaran Mendapatkan Nilai Null

Mari kita gambarkan ini dengan contoh:

SELECT pid FROM planets WHERE userid = NULL

Pertanyaan ini dijangka mengembalikan baris di mana lajur userid mempunyai nilai NULL. Walau bagaimanapun, dalam banyak kes, ia mengembalikan set kosong, walaupun data terdapat dalam jadual (seperti yang disahkan melalui phpMyAdmin).

Asal Usul Masalah

Isu timbul kerana null in SQL berbeza daripada nilai lain. Menurut salah satu daripada 12 peraturan Codd, null tidak boleh sama dengan mana-mana nilai lain, termasuk nilainya sendiri. Akibatnya, menggunakan operator = untuk membandingkan lajur kepada NULL akan sentiasa mengembalikan palsu.

Penyelesaian: IS NULL Operator

Untuk berjaya mendapatkan baris dengan nilai nol, kita mesti menggunakan operator IS NULL :

SELECT pid FROM planets WHERE userid IS NULL

Dengan menggunakan IS NULL, kami memeriksa sama ada lajur itu benar-benar batal daripada cuba untuk bandingkan dengan NULL menggunakan operator =.

Pertimbangan Lain

  • Pastikan lajur sebenarnya batal dan tidak disimpan sebagai "NULL" atau "null" dengan ruang belakang.
  • Periksa sama ada enjin meja ialah MyISAM, yang mungkin menghadapi masalah dengan pengendalian batal. Berhijrah ke InnoDB boleh menyelesaikan masalah ini.

Walau bagaimanapun, adalah penting untuk menggunakan pilihan lain sebelum mengubah suai struktur meja atau enjin.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengambil Baris dengan Berkesan dengan Nilai NULL dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn