0

1118レコードのテーブルがあります。これらのレコードにflagは、デフォルトでNULLであるフィールドが1つあります。これらのレコードの556には、フィールドflagがtrueとしてマークされており、残りはNULLです。次のクエリを実行すると:

select count(*) from table_name where flag!='true'

結果は0になります。実際の結果は1118-556、つまり562になります。

私は何を間違っていますか?

4

2 に答える 2

2

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 値を理解してください

于 2012-04-20T10:04:12.803 に答える
0

クエリでは、明示的に言及されていない限り、NULL はブール式と一致することはありません。

SELECT COUNT(*) FROM TABLE_NAME WHERE flag IS NULL
于 2012-04-20T10:04:22.307 に答える