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*/