0

一部のレコードがそのフィールドに null 値を持つ smallint フィールドがあります。そのため、select で % を使用すると、そのフィールドに値があるレコードのみが表示されます。

null を持つものを含むすべてのレコードを表示するために使用できる他のワイルドカード文字はありますか? または使用する必要がありますか、またはnullですか?

ありがとう

4

2 に答える 2

5

NULL には値がなく、他の値と比較できないため、クエリが失敗する理由が説明されています。NULL 値もフェッチする場合は、OR your_field IS NULL既に指摘したように、WHERE 句に追加する必要があります。

注:
特にデータベースを使い始めたばかりの人にとっては、NULL が混乱を招くことがあります。NULL がどのように動作するかを覚えておく良い方法は、その値が「私が知らない何か」であると考えることです。次に、クエリを作成すると、比較が NULL に対して失敗することが理にかなっていることがわかります。

たとえば、「NULL は 0 より大きいか?」混乱する可能性があります。ただし、この質問を「私が知らないものは 0 より大きいか?」と見なすと、すぐに意味がわかります。答えは「わかりません」です (そのため、行が返されません)。:)

于 2012-08-07T14:11:20.680 に答える
0

COALESCE関数を使用して、NULLを事前定義された値に置き換えることができます。例えば:

SELECT
  *
FROM
  my_table
WHERE
  COALESCE(my_field, -1) = some_value
于 2012-08-07T14:24:15.853 に答える