電子メールを持たないユーザーレコードを選択しようとすると、クエリで適切な結果が得られません。
select * from users where email=''
と:
select * from users where email=NULL
どちらも異なる結果をもたらしますが、どちらも正しい結果をもたらしません。どうすれば正しい結果を得ることができますか?
ISNULLまたはISNOTNULLです。
select * from users where email IS NULL
ユーザーが「電子メールなし」にする方法に応じて、フィールドのデフォルト値をNULLに設定し、フィールドをNULL可能にする必要があります。次に、そのテーブルの新しいレコードの挿入が実行されると、電子メールは空ではなくNULLになります。
または、すでに不一致のテーブルで立ち往生している場合は、次のようなことを試してください。
select * from users where LENGTH(COALESCE(email,'')) = 0
email
これにより、NULLを空として扱い、の「空」の値を持つすべてのレコードが得られます。
nullはnullと等しくありません。
指定する必要がありますIS NULL
Mysqlはそれらの両方を異なる方法で扱います
email=''
空白の値をemail=NULL
チェックし、null値をチェックするため、両方で異なる結果が得られます。
is NULL
空白値とnull値の両方をチェックするために使用する必要があります。
SELECT * FROM users WHERE email IS NULL