2012-04-06 3 views
1

私のクエリは正しい結果を与えていない値ながら:のMySQL - 不正なクエリ結果はnullをチェックすると、私は電子メールを持っていないユーザーのレコードを選択しようとすると、

select * from users where email='' 

そして:

select * from users where email=NULL 

を両方とも異なる結果をもたらしますが、どちらも正しい結果をもたらしません。どうすれば正しい結果を得ることができますか?

答えて

4

IS NULLまたはIS NOT NULLです。

select * from users where email IS NULL 

は、ユーザーが「何の電子メール」を持つことができない方法によっては、NULLフィールドNULL可能にするために、フィールドのデフォルト値を設定する必要があります。次に、そのテーブルの新しいレコードの挿入が実行されると、電子メールは空ではなくNULLになります。空としてNULL治療、emailのための「空」の値であなたのすべてのレコードをあげる

select * from users where LENGTH(COALESCE(email,'')) = 0 

:あなたはすでに不一致テーブルで立ち往生している場合

また、のようなものを試してみてください。

+1

正確に。何らかの理由でMySQLでNULLがNULLに等しくない。 私の会社のコードベースでは、 という形式のクエリがたくさんありました。「何かがNULLであるか何か= ''」誰も「値なし」を記憶していないので、 –

0

MySQLは

email=''ブランク値をチェックし、それらの両方が異なる結果を与える理由であるヌル値に対してemail=NULLチェック異なるそれらの両方を扱います。

is NULLを使用すると、空白値とヌル値の両方がチェックされます。

SELECT * FROM users WHERE email IS NULL 
1

nullはnullではありません。

あなたが指定する必要がありますIS NULL

関連する問題