Трябва да използвате IS NOT NULL
. (Операторите за сравнение =
и <>
и двете дават UNKNOWN
с NULL
от двете страни на израза.)
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
Само за пълнота ще спомена, че в MySQL можете също да отречете нулев безопасен оператор за равенство но това не е стандартен SQL.
SELECT *
FROM table
WHERE NOT (YourColumn <=> NULL);
Редактирано, за да отразява коментарите. Изглежда, че вашата маса може да не е в първата нормална форма, в който случай промяната на структурата може да улесни задачата ви. Все пак няколко други начина да го направите...
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*/
Недостатъкът на горното е, че сканира таблицата няколко пъти по веднъж за всяка колона. Това може да бъде избегнато от по-долу, но не съм тествал това в 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*/