ほとんどのアプリケーションには、 NULL を含む可能性のあるデータベースクエリ結果を除外するために使用できる、何らかの形式のサーバー側またはクライアント側のテクノロジがあります。 または空の値、別の言語を使用し、コードを実行するという追加の負担は、通常、サーバーにとってよりコストがかかり、実際、ほとんど不要です。
代わりに、以下では、MySQLエンジン自体を使用してこのタスクを実行する方法を簡単に説明し、厄介な NULL のレコードを除外して、必要なレコードのみを取得します。 ミックス内の列。
ISNOTNULL比較演算子
特定の列の結果セットにNULLが含まれていないことを確認するための、これまでで最も単純で最も簡単な方法 値はISNOT NULLを使用することです 比較演算子。
たとえば、 booksのすべてのレコードを選択する場合 primary_authorが存在するテーブル 列はではありません NULL 、クエリは次のようになります:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
primary_author IS NOT NULL;
IS NOT NULLなので 他のコンパレータと同じように動作し、他の WHEREと組み合わせることができます =を使用しているかのように、結果をさらにフィルタリングする句 、>コード> 、< 、 LIKE およびその他の標準比較演算子。
場合によっては、いいえの結果を取得したい場合があります。 NULL 値は複数の列にまたがって存在します。たとえば、 booksにいくつかのレコードがあります テーブル:
id | title | primary_author | published_date
1 | The Hobbit | Tolkien | 09-21-1937
2 | The Silmarillion | Tolkien | 09-15-1977
3 | The Name of the Wind | Rothfuss | 03-27-2007
4 | The Wise Man's Fear | Rothfuss | 03-01-2011
5 | The Doors of Stone | Rothfuss | NULL
6 | Beowulf | NULL | 01-01-1000
石の扉に注意してください ( id 5 )は公開されていないため、 published_date NULLです 。同様に、 Beowulf ( id 6 )–有名な古英語の叙事詩–作者は知られていないため、 primary_author NULLです 。
この場合、最初の4つのみを含む結果をクエリすることができます。 レコード。これにより、 NULLを持つ最後の2つのレコードが除外されます。 いずれかのprimary_authorの値 またはpublished_date 。これは、 ANDを使用したこの単純なステートメントで実行できます。 複数の比較演算子を使用する場合:
SELECT
primary_author,
published_date,
title
FROM
books
WHERE
(
primary_author IS NOT NULL
AND
published_date IS NOT NULL
);
注:括弧は必須ではありませんが、読みやすくするために、グループ化されたコンパレータを囲むことをお勧めします。
そこにあります。すべてのNULLを除外するために使用できる単純な比較演算子 レコードの値。