MySQL IN キーワードで NULL 値が除外される
MySQL クエリで IN キーワードを使用して特定の値に基づいて行をフィルタリングすると、予期しない結果が発生する可能性がありますNULL 値を操作するときに発生します。この記事では、この動作の背後にある理由を調査し、そのようなシナリオで NULL 値を正しく処理する方法を提供します。
あなたが言及したクエリ:
select count(*) from Table1 where CurrentDateTime>'2012-05-28 15:34:02.403504' and Error not in ('Timeout','Connection Error');
驚くべきことに、Error 列に NULL 値が含まれる行が除外されます。 。これは、IN キーワードが意味的に次と同等であるためです。
Error <> 'TimeOut' AND Error <> 'Connection Error'
NULL 値の特性により、上記の式は true と評価できません。 NULL 値は、それ自体を含め、他の値と等しくありません。したがって、Error 列に NULL 値を含む行はフィルターで除外されます。
結果セットに NULL 値を含めるには、次のようにクエリを調整できます:
例:
create table tbl (msg varchar(100) null, description varchar(100) not null); insert into tbl values ('hi', 'greet'), (null, 'nothing'); select 'hulk' as x, msg, description from tbl where msg not in ('bruce','banner');
NULL 値は不定であるため除外されるため、このクエリは msg が「hi」である行のみを返します。
以上がMySQL クエリで IN キーワードを使用して NULL 値を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。