Sie sollten IS NOT NULL
verwenden . (Die Vergleichsoperatoren =
und <>
beide geben UNKNOWN
mit NULL
auf beiden Seiten des Ausdrucks.)
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
Nur der Vollständigkeit halber erwähne ich, dass Sie in MySQL auch den null sicherer Gleichheitsoperator aber das ist kein Standard-SQL.
SELECT *
FROM table
WHERE NOT (YourColumn <=> NULL);
Bearbeitet, um Kommentare widerzuspiegeln. Es hört sich so an, als ob sich Ihre Tabelle nicht in der ersten normalen Form befindet. In diesem Fall kann eine Änderung der Struktur Ihre Aufgabe erleichtern. Ein paar andere Möglichkeiten, es zu tun ...
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*/
Der Nachteil des oben Gesagten besteht darin, dass die Tabelle mehrmals einmal für jede Spalte gescannt wird. Das kann möglicherweise durch das Folgende vermieden werden, aber ich habe dies nicht in MySQL getestet.
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*/