データベースにおいて、NULL
は「未知の値」または「値が存在しない」という意味を持ちます。
一方で、空文字(''
)は値が存在するが、その値が空であることを示します。
NULL
と空文字を区別することは一般的に推奨されますが、一部のケースやアプリケーションで、これらを同様に扱いたい場合があるかとおもいます。
そこで、Oracle, MySQL, および PostgreSQL で NULL
と空文字を同様に扱う方法を整理してみます。
OracleでNULLと空文字を同様に扱う方法
Oracleデータベースでは、空文字とNULL
は同じとして扱われます。
しかし、NULL
と空文字を明確に区別したい場合は、それに適したクエリや関数を使用する必要があります。
例: my_table
の name
カラムでNULLまたは空文字を検索する場合:
SELECT * FROM my_table WHERE name IS NULL OR name = '';
MySQLでNULLと空文字を同様に扱う方法
MySQLでは、空文字とNULL
は明確に区別されます。
これらを同様に扱いたい場合、以下のようなクエリを使用することで対応できます。
例: my_table
の name
カラムでNULLまたは空文字を検索する場合:
SELECT * FROM my_table WHERE COALESCE(name, '') = '';
PostgreSQLでNULLと空文字を同様に扱う方法
PostgreSQLもMySQLと同様に、NULL
と空文字を別のものとして扱います。
これらを同じものとして評価するためには、以下のクエリを使用します。
例: my_table
の name
カラムでNULLまたは空文字を検索する場合:
SELECT * FROM my_table WHERE COALESCE(name, '') = '';
コメント