使用する必要がありますIS NOT NULL
。(比較演算子=
と<>
の両方ギブUNKNOWN
とNULL
発現のいずれかの側に)。
SELECT *
FROM table
WHERE YourColumn IS NOT NULL;
完全を期すために、MySQLではnullセーフ等価演算子を無効にすることもできますが、これは標準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*/
上記の欠点は、テーブルを各列に対して1回ずつスキャンすることです。これはおそらく以下で回避できるかもしれませんが、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*/