Anda harus menggunakan IS NOT NULL
. (Operator pembanding =
dan <>
keduanya memberikan UNKNOWN
dengan NULL
di kedua sisi ekspresi.)
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
Hanya untuk kelengkapan saya akan menyebutkan bahwa di MySQL Anda juga dapat meniadakan operator kesetaraan aman nol tapi ini bukan SQL standar.
SELECT *
FROM table
WHERE NOT (YourColumn <=> NULL);
Diedit untuk mencerminkan komentar. Kedengarannya seperti tabel Anda mungkin tidak dalam bentuk normal pertama dalam hal ini mengubah struktur dapat membuat tugas Anda lebih mudah. Beberapa cara lain untuk melakukannya...
SELECT val1 AS val
FROM your_table
WHERE val1 IS NOT NULL
UNION ALL
SELECT val2
FROM your_table
WHERE val2 IS NOT NULL
/*And so on for all your columns*/
Kerugian dari hal di atas adalah memindai tabel beberapa kali sekali untuk setiap kolom. Itu mungkin dapat dihindari dengan cara di bawah ini, tetapi saya belum mengujinya di MySQL.
SELECT CASE idx
WHEN 1 THEN val1
WHEN 2 THEN val2
END AS val
FROM your_table
/*CROSS JOIN*/
JOIN (SELECT 1 AS idx
UNION ALL
SELECT 2) t
HAVING val IS NOT NULL /*Can reference alias in Having in MySQL*/