Debe utilizar IS NOT NULL
. (Los operadores de comparación =
y <>
ambos dan UNKNOWN
con NULL
a cada lado de la expresión).
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
Solo para completar, mencionaré que en MySQL también puede negar el operador de igualdad segura nula, pero esto no es SQL estándar.
SELECT *
FROM table
WHERE NOT (YourColumn <=> NULL);
Editado para reflejar los comentarios. Parece que su tabla puede no estar en la primera forma normal, en cuyo caso cambiar la estructura puede facilitar su tarea. Sin embargo, hay un par de otras formas de hacerlo ...
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*/
La desventaja de lo anterior es que escanea la tabla varias veces una vez para cada columna. Es posible que esto se pueda evitar a continuación, pero no lo he probado en 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*/