sql >> データベース >  >> RDS >> Mysql

MySQLSELECTはnull値ではない

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


    1. postgresqlで特定の列を持つテーブルを見つける方法

    2. MySQLで行を列に動的に転置する方法

    3. SQLで絶対値を計算する方法

    4. UTF-8:一般ですか?置き場? Unicode?