Saya mengalami masalah di mana ketika saya mencoba memilih baris yang memiliki NULL untuk kolom tertentu, ia mengembalikan set kosong. Namun, ketika saya melihat tabel di phpMyAdmin, ia mengatakan null untuk sebagian besar baris.
Kueri saya terlihat seperti ini:
SELECT pid FROM planets WHERE userid = NULL
Kosongkan setiap waktu.
Banyak tempat mengatakan untuk memastikan itu tidak disimpan sebagai "NULL" atau "null" bukan nilai yang sebenarnya, dan satu mengatakan untuk mencoba mencari hanya spasi ( userid = ' '
) tetapi tidak ada yang berfungsi. Ada saran untuk tidak menggunakan MyISAM dan menggunakan innoDB karena MyISAM kesulitan menyimpan null. Saya beralih tabel ke innoDB tapi sekarang saya merasa masalahnya mungkin masih belum benar-benar nol karena cara mengubahnya. Saya ingin melakukan ini tanpa harus membuat ulang tabel sebagai innoDB atau yang lainnya, tetapi jika harus, saya pasti dapat mencobanya.
Jawaban:
SQL NULL khusus, dan harus Anda lakukan
WHERE field IS NULL
, karena NULL tidak dapat sama dengan apa pun,termasuk itu sendiri (yaitu: NULL = NULL selalu salah).Lihat
Rule 3
https://en.wikipedia.org/wiki/Codd%27s_12_rulessumber
select * from foo where bar <> "abc"
akan mengembalikan baris di mana bilah adalah nol. Itu membuat saya untuk loop hari ini. Docs memanggil operator "tidak sama dengan", tetapi sebenarnya itu "sama dengan sesuatu selain" operator.<>
sumber
Karena semua diberi jawaban, saya ingin menambahkan sedikit lagi. Saya juga menghadapi masalah yang sama.
Mengapa kueri Anda gagal? Kamu punya,
Ini tidak akan memberi Anda hasil yang diharapkan, karena dari mysql doc
Tekankan milikku.
Larutan
Untuk menguji
NULL
, gunakanIS NULL
danIS NOT NULL
operator.NULL
.NULL
.sumber
Ada juga
<=>
operator:Akan bekerja Yang menyenangkan adalah itu
<=>
juga bisa digunakan dengan nilai-nilai non-NULL:SELECT NULL <=> NULL
hasil panen1
.SELECT 42 <=> 42
hasil1
juga.Lihat di sini: https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_equal-to
sumber
Info dari http://w3schools.com/sql/sql_null_values.asp :
Jadi dalam kasus masalah Anda:
sumber
Punya masalah yang sama di mana permintaan:
tidak mengembalikan nilai. Tampaknya ada masalah dengan MyISAM dan permintaan yang sama pada data di InnoDB menghasilkan hasil yang diharapkan.
Pergi bersama:
Mengembalikan semua hasil yang diharapkan.
sumber
sumber
Saya memiliki masalah yang sama ketika mengkonversi database dari Access ke MySQL (menggunakan vb.net untuk berkomunikasi dengan database).
Saya perlu menilai apakah bidang (tipe bidang varchar (1)) adalah nol.
Pernyataan ini berhasil untuk skenario saya:
sumber