ほとんどのアプリケーションには、 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
を除外するために使用できる単純な比較演算子 レコードの値。