問題:
列にNULLが含まれるレコードを検索する必要があります。
例:
私たちのデータベースには、children
4列のデータ:id
、first_name
、middle_name
、およびlast_name
。
id | first_name | ミドルネーム | last_name |
---|---|---|---|
1 | ジョン | カール | ジャクソン |
2 | トム | NULL | トムソン |
3 | リサ | アリス | NULL |
4 | アン | NULL | スミス |
ミドルネームのない子のID、名、および姓を見つけましょう(列middle_name
でNULL) )。これにはISNULL演算子を使用します。
解決策:
SELECT id, first_name, last_name FROM children WHERE middle_name IS NULL;
結果は次のとおりです。
id | first_name | last_name |
---|---|---|
2 | トム | トムソン |
4 | アン | スミス |
これにより、middle_name
にNULLが含まれるレコードのみが返されます。 、したがって、トムとアンは存在しますが、ミドルネームを持つジョンとリサは存在しません。
ディスカッション:
IS NULL
を使用します 列にNULLがあるレコードを検索するWHEREの条件の演算子。もちろん、列の名前の代わりに任意の式を使用して、それがNULLを返すかどうかを確認することもできます。列の名前とISNULL演算子だけが必要です(この例では、middle_name IS NULL
)。この条件をWHERE句に入れて、行をフィルタリングします(この例では、WHERE middle_name IS NULL
)。条件がtrueの場合、列にはNULLが格納され、この行が返されます。上記のクエリでは、ミドルネームを持たないTomとAnneの子を持つ2つのレコードのみが返されるため、列middle_name
NULLを格納します。