Vous devez utiliser IS NOT NULL
. (Les opérateurs de comparaison =
et <>
les deux donnent UNKNOWN
avec NULL
de chaque côté de l'expression.)
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
Juste pour être complet, je mentionnerai que dans MySQL, vous pouvez également annuler le opérateur d'égalité sûr nul mais ce n'est pas du SQL standard.
SELECT *
FROM table
WHERE NOT (YourColumn <=> NULL);
Modifié pour refléter les commentaires. Il semble que votre table ne soit pas dans sa première forme normale, auquel cas la modification de la structure peut faciliter votre tâche. Quelques autres façons de le faire cependant...
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*/
L'inconvénient de ce qui précède est qu'il analyse la table plusieurs fois une fois pour chaque colonne. Cela peut éventuellement être évité par ce qui suit, mais je n'ai pas testé cela dans 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*/