1118レコードのテーブルがあります。これらのレコードにflag
は、デフォルトでNULLであるフィールドが1つあります。これらのレコードの556には、フィールドflag
がtrueとしてマークされており、残りはNULLです。次のクエリを実行すると:
select count(*) from table_name where flag!='true'
結果は0になります。実際の結果は1118-556、つまり562になります。
私は何を間違っていますか?
NULL は、別の NULL でさえも、何にも比較されません。
select count(*) from table_name where flag!='true' OR flag IS NULL
また
select count(*) from table_name where flag IS NULL
true
( false
?) とNULL以外の別の値があるかどうかによって異なります
select
count(CASE WHEN flag = 'true' THEN flag END) AS truecount,
count(CASE WHEN flag = 'false' THEN flag END) AS falsecount
count(*) - count(flag) AS NULLCount
from
table_name
最後に、これらを参照して COUNT と null/not null 値を理解してください
クエリでは、明示的に言及されていない限り、NULL はブール式と一致することはありません。
SELECT COUNT(*) FROM TABLE_NAME WHERE flag IS NULL