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

MySQLの謎:null値はnull以外の文字列と違いはありません

    その通り。 NULL 特定の値ではなく、不明な値を表します(NULLと同じではありません) Cの場合、またはnil Rubyなどで)SQLでは、未知の値と何かを比較すると、結果も不明です。また、WHEREの行は取得されません。 状態は不明です。

    これを試してください:

    SELECT NULL <> 2;
    

    NULLが表示されます 結果として。

    これを試してください:

    SELECT * FROM t WHERE NULL;
    

    テーブルがtであっても、行は表示されません。 巨大です。

    あなたが望んでいたことを本当に必要としている場合(そして私はこれを支持していません)、あなたはこのようなことをすることができます:

    SELECT T.f1, T.f2
    FROM (SELECT NULL f1, 'a' f2) T
    WHERE ((T.f1 IS NULL OR T.f2 IS NULL)
        AND (T.f1 IS NOT NULL OR T.f2 IS NOT NULL))
        OR T.f1 <> T.f2
    


    1. SailsJS-レコードの作成時にエラーが発生せずに文字列属性の長さを指定するにはどうすればよいですか?

    2. 既存のテーブルに外部キーを追加する

    3. MySQL-DESCによる注文でグループ化

    4. 自動インクリメントが適用された場合、MySQLは削除されたIDを再利用しますか