Saya telah menulis kueri untuk memeriksa pengguna dengan kriteria tertentu, salah satunya adalah mereka memiliki alamat email.
Situs kami akan memungkinkan pengguna memiliki atau tidak memiliki alamat email.
$aUsers=$this->readToArray('
SELECT `userID`
FROM `users`
WHERE `userID`
IN(SELECT `userID`
FROM `users_indvSettings`
WHERE `indvSettingID`=5 AND `optionID`='.$time.')
AND `email`!=""
');
Apakah ini cara terbaik untuk memeriksa kolom kosong di SQL? Saya baru saja mencoba "IS NOT NULL" dan ini masih mengembalikan catatan pengguna tanpa mereka memiliki alamat email.
Kueri di atas berfungsi tetapi karena penasaran saya bertanya-tanya apakah saya melakukannya dengan cara yang benar.
NULL
Ya, apa yang Anda lakukan itu benar. Anda memeriksa untuk memastikan bidang email bukan string kosong. NULL berarti datanya hilang. String kosong
""
adalah string kosong dengan panjang 0.Anda juga dapat menambahkan pemeriksaan null
sumber
OR email IS NOT NULL
di sini mubazir (tersirat oleh kondisi sebelumnya).email
bidang kosong .Anda bisa menggunakan
sumber
Ada perbedaan antara string kosong (email! = "") Dan NULL. NULL adalah null dan string Kosong adalah sesuatu.
sumber
AND (email != '' AND email IS NOT NULL)
email IS NOT NULL
sini mubazir.!=
predikat tidak akan pernah cocok denganNULL
nilai.Ini akan berfungsi tetapi masih ada kemungkinan catatan nol dikembalikan. Meskipun Anda mungkin menyetel alamat email ke string dengan panjang nol saat Anda memasukkan data, Anda mungkin masih ingin menangani kasus alamat email NULL yang masuk ke sistem.
sumber
NULL
rekaman dikembalikan.Jika Anda ingin menemukan semua record yang bukan NULL, dan kosong atau memiliki sejumlah spasi, ini akan berfungsi:
Pastikan ada spasi setelah garis miring terbalik. Info lebih lanjut di sini: http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html
sumber
periksa kode ini untuk masalah:
sumber