【SQL】DELETE文でNULLレコードを削除する方法


ここではORACLEデータベースのSQLで、DELETE文で列(カラム)の値がNULL値のレコードを削除する方法を紹介しています。

DELETE文のサンプルは↓で多数紹介していますので参考にしてください。
>>【SQL】DELETE文の書き方:サンプル多数あり

WHERE句の条件にNULLを指定する方法

DELETE文で列の値がNULL値のレコードを削除する場合は、WHERE句の条件にNULL値を指定します。

NULL値を指定するときは、次の構文の通りです。
NULL値を条件に指定するときは、「列名=NULL」ではなく、「列名 IS NULL」と条件を指定します。

DELETE FROM テーブル名 WHERE 列名 IS NULL;

次のSQLでは、TAB1テーブルのCOL1列の値がNULL値のレコードを削除の対象としています。「col1 IS NULL」でNULL値のレコードを条件に指定しています。

DELETE FROM tab1 WHERE col1 IS NULL;

NULL値以外のレコードを削除する方法

DELETE文で列の値がNULL値以外のレコードを削除する場合も、WHERE句で条件に指定します。

NULL値以外を指定するときは、次の構文の通りです。
NULL値以外という条件を指定するときは、「列名!=NULL」ではなく、「列名 IS NOT NULL」と条件を指定します。

DELETE FROM テーブル名 WHERE 列名 IS NOT NULL;

次のSQLでは、TAB1テーブルのCOL1列の値がNULL値以外のレコードを削除の対象としています。「col1 IS NOT NULL」でNULL値以外のレコードを条件に指定しています。

DELETE FROM tab1 WHERE col1 IS NOT NULL;

まとめ

DELETE文でNULL値のレコードを削除したいときは、WHERE句に「列名 IS NULL」の条件を指定します。

NULL値以外のレコードを削除の対象とするときは、「列名 IS NOT NULL」とします。

当サイトでは、DELETE文の様々な書き方を解説しております。
詳しくは「【SQL】DELETE文の書き方:サンプル多数あり」で解説しているのでぜひ参考にしてください。