0

列field_valueに次の可能な値を持つテーブルがあります。

しかし、「CB」ではないすべての値を選択しようとすると、クエリ結果もすべてのNULL値を無視します。

なぜこれが起こるのですか?

mysql> select distinct field_value from TableName;
+--------------+
| field_value  |
+--------------+
| S            |
| NULL         |
| CA           |
| CB           |
+--------------+
4 rows in set (6.32 sec)

mysql> select distinct field_value from TableName where field_value!='CB';
+--------------+
| field_value  |
+--------------+
| S            |
| CA           |
+--------------+
2 rows in set (0.15 sec)

mysql>
4

4 に答える 4

2

NULLは不明であり、 とunknown等しくないという意味ではないからですCB

null 値を返したい場合は、クエリに条件 ( IS NULL ) を追加します。

SELECT ...
FROM   ...
where field_value != 'CB' OR field_value IS NULL
于 2012-10-19T03:18:12.543 に答える
2

これは、 との比較でNULLも結果が得られるためNULLです (つまり、真でも偽でもない)。

特別な演算子IS NULLIS NOT NULLは、 と比較するのに便利ですNULL

したがって、クエリは次のようになります。

... WHERE field_value!='CB' OR field_value IS NULL;

関連項目: NULL 値の操作

于 2012-10-19T03:18:35.560 に答える
0

実際には NULL は「欠落している未知の値」を意味します

このページをチェック

于 2012-10-19T03:38:40.093 に答える