SQLでNULLと空文字を同様に扱う方法

※当サイトではアフィリエイト広告を利用しています

データベースにおいて、NULLは「未知の値」または「値が存在しない」という意味を持ちます。

一方で、空文字('')は値が存在するが、その値が空であることを示します。

NULLと空文字を区別することは一般的に推奨されますが、一部のケースやアプリケーションで、これらを同様に扱いたい場合があるかとおもいます。

そこで、Oracle, MySQL, および PostgreSQL で NULL と空文字を同様に扱う方法を整理してみます。

OracleでNULLと空文字を同様に扱う方法

Oracleデータベースでは、空文字とNULLは同じとして扱われます。

しかし、NULLと空文字を明確に区別したい場合は、それに適したクエリや関数を使用する必要があります。

例: my_tablename カラムでNULLまたは空文字を検索する場合:

SELECT * FROM my_table WHERE name IS NULL OR name = '';

MySQLでNULLと空文字を同様に扱う方法

MySQLでは、空文字とNULLは明確に区別されます。

これらを同様に扱いたい場合、以下のようなクエリを使用することで対応できます。

例: my_tablename カラムでNULLまたは空文字を検索する場合:

SELECT * FROM my_table WHERE COALESCE(name, '') = '';

PostgreSQLでNULLと空文字を同様に扱う方法

PostgreSQLもMySQLと同様に、NULLと空文字を別のものとして扱います。

これらを同じものとして評価するためには、以下のクエリを使用します。

例: my_tablename カラムでNULLまたは空文字を検索する場合:

SELECT * FROM my_table WHERE COALESCE(name, '') = '';

コメント