Apakah mungkin untuk melakukan pernyataan pilih yang hanya mengambil nilai TIDAK NULL?
Saat ini saya menggunakan ini:
SELECT * FROM table
Dan kemudian saya harus menyaring nilai-nilai nol dengan loop php.
Apakah ada cara untuk melakukannya:
SELECT * (that are NOT NULL) FROM table
?
Saat ini ketika saya memilih * saya mendapatkan val1, val2, val3, null, val4, val5, null, null dll .... tapi saya hanya ingin mendapatkan nilai yang tidak nol dalam hasil saya. Apakah ini mungkin tanpa pemfilteran dengan loop?
Jawaban:
Anda harus menggunakan
IS NOT NULL
. (Operator perbandingan=
dan<>
keduanya memberiUNKNOWN
denganNULL
di kedua sisi ekspresi.)Hanya untuk kelengkapan saya akan menyebutkan bahwa di MySQL Anda juga dapat meniadakan operator kesetaraan nol yang aman tetapi ini bukan SQL standar.
Diedit untuk mencerminkan komentar. Sepertinya meja Anda mungkin tidak dalam bentuk normal pertama dalam hal mengubah struktur dapat membuat tugas Anda lebih mudah. Beberapa cara lain untuk melakukannya ...
Kerugian di atas adalah bahwa ia memindai tabel beberapa kali satu kali untuk setiap kolom. Itu mungkin bisa dihindari dengan di bawah ini tetapi saya belum menguji ini di MySQL.
sumber
CASE
pernyataan, bukanCASE
berfungsi. Jadi bukankah itu seharusnyaEND CASE
bukanEND
diSELECT CASE ...
bagian?idx
rom yang pertamaSELECT
berasal dariidx
yang keduaSELECT
? Apa yangCASE
ingin dicapai oleh pernyataan itu? Apa yangSELECT
sebenarnya dilakukan oleh yang kedua ? Dan Anda melakukan join batin, bukan join silang, bukan?SELECT * FROM table WHERE * IS NOT NULL AND primary_key="somevalue"
)Anda dapat memfilter baris yang berisi nilai NULL di kolom tertentu:
Jika Anda ingin memfilter baris yang berisi nol di kolom mana pun, coba ini:
Pembaruan: Berdasarkan komentar Anda, mungkin Anda menginginkan ini?
Dan saya setuju dengan Martin bahwa jika Anda perlu melakukan ini maka Anda mungkin harus mengubah desain database Anda.
sumber
*
kembali? Mungkin berikan sedikit contoh data dalam pertanyaan Anda karena tidak jelas dari komentar Anda di atas apakah ini semua satu kolom.Satu-satunya kelemahan dari pendekatan ini adalah Anda hanya dapat membandingkan 5 kolom, setelah itu hasilnya akan selalu salah, jadi saya bandingkan hanya bidang yang bisa
NULL
.sumber
Saya menemukan solusi ini:
Kueri ini pilih yang terakhir bukan nilai nol untuk setiap kolom.
Contoh
Jika Anda punya meja:
Anda mendapatkan:
Pertanyaan
Saya harap membantu Anda.
sumber
Saya menggunakan
\!
perintah di dalam MySQL untuk mengeluarkan nilai NULL dari shell:Ini bekerja paling baik dengan tepat di
.my.cnf
mana basis data / nama pengguna / kata sandi Anda ditentukan. Dengan begitu Anda hanya perlu mengelilingi danselect
dengan Anda .\! mysql e
| grep -v NULL
sumber
Permintaan berikut berfungsi untuk saya
ketika saya telah menetapkan nilai default kolom 'NULL' lalu
dan ketika saya telah menetapkan nilai default, maka tidak ada
sumber
Ya gunakan
NOT NULL
dalam permintaan Anda seperti ini di bawah ini.sumber
MYSQL BUKANLENGKAP DENGAN GABUNGAN DAN PILIH, INSERT KE, HAPUS & OPERATOR LOGIS SEPERTI ATAU, BUKAN
sumber
sumber