MySQL で Null 以外の値のみを選択する
このチュートリアル記事では、特定の列からすべての null 値を削除する select ステートメントを MySQL で作成する方法を説明します。
MySQL の Null 値を理解する
NULL
値は、テーブルのどの部分が空であるかを知るのに役立ち、それらを適切に処理できるようにします。
テーブルから null 行または列を削除する理由は、探しているものによって大きく異なりますが、1つの良い例は、テーブル内の特定の列からのデータが必要であり、行が NULL
として返される場合は使用できません。その情報を読んでください。
大きなテーブルを処理する場合、null 値を削除すると、時間を節約し、必要なコンピューティングを減らすことができます。
テーブルからクエリを実行するスクリプトを記述してから、データをループして null 値を求めるスクリプトを作成する代わりに、最初のスクリプトに IS NOT NULL
条件を含めることでプロセスを簡素化できます。
SELECT * FROM 'table name'
WHERE 'column name' IS NOT NULL;
結果は、指定された列に基づく NULL
値を持つ行のない完全なテーブルになります。
以下の例では、アルバニーの郵便番号のリストと、正しく入力された郵便番号とタイプミスのある郵便番号を区別するために、両側に true
または false
のカテゴリがあります。
| code | cd_check |
| -------|----------|
| NULL | true |
| 12649 | false |
| 12248 | true |
| 12239 | true |
| 12359 | NULL |
| 12227 | true |
cd_check
列に NULL
値がある行のみを削除するには、次のコードを適用します。
CREATE TABLE albany (
code INTEGER,
cd_check TEXT
);
INSERT INTO albany VALUES (NULL,"true");
INSERT INTO albany VALUES (12649,"false");
INSERT INTO albany VALUES (12248,"true");
INSERT INTO albany VALUES (12239,"true");
INSERT INTO albany VALUES (12359,NULL);
INSERT INTO albany VALUES (12227,"true");
SELECT code, cd_check FROM albany
WHERE cd_check IS NOT NULL;
結果:
| code | cd_check |
| -------|----------|
| NULL | true |
| 12649 | false |
| 12248 | true |
| 12239 | true |
| 12227 | true |
上記は、cd_check
列に NULL
値を含む行がないテーブルを返しました。ただし、指定された列は 1つだけなので、NULL
値の行はコード列の下に残ります。
AND
ステートメントを追加することにより、複数の列から行を削除できます。ステートメントは両方の列をチェックインし、以下を返します。
| code | cd_check |
| -------|----------|
| 12649 | false |
| 12248 | true |
| 12239 | true |
| 12227 | true |
null 値を含む両方の行がテーブルから削除されました。
MySQL で WHERE NOT
と <=>
を使用して非ヌル値のみを選択する
スクリプトに IS NOT NULL
を配置する代わりに、次の代替手段を使用できます。
WHERE NOT
および <=>
、比較演算子は、WHERE
の後に NOT
が続く場合、IS NOT
に置き換えます。
例:
SELECT code, cd_check FROM albany
WHERE NOT cd_check <=> NULL;
これも機能しますが、IS NOT NULL
を使用することをお勧めします。これは、より良い方法です。