Dovresti usare IS NOT NULL
. (Gli operatori di confronto =
e <>
entrambi danno UNKNOWN
con NULL
su entrambi i lati dell'espressione.)
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
Solo per completezza menzionerò che in MySQL puoi anche negare il operatore di uguaglianza nullo sicuro ma questo non è SQL standard.
SELECT *
FROM table
WHERE NOT (YourColumn <=> NULL);
Modificato per riflettere i commenti. Sembra che il tuo tavolo potrebbe non essere nella prima forma normale, nel qual caso cambiare la struttura potrebbe semplificare il tuo compito. Un paio di altri modi per farlo però...
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*/
Lo svantaggio di quanto sopra è che esegue la scansione della tabella più volte una volta per ogni colonna. Ciò potrebbe essere evitato da quanto segue, ma non l'ho testato in 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*/