DB

各DB上で0またはNULLによる徐算のSQL文を試してみた

今回は、Oracle・MySQL・PostgreSQL・SQL Serverの各データベース上で、0で除算した場合・NULLで除算した場合それぞれについて試してみることにした。
基本は、0で除算した場合はエラーで、NULL値で除算した場合はNULL値が返されるが、MySQLに限り、0で除算した場合はNULL値が返されることが確認できた。

前提条件

Windows端末上に、Oracle・MySQL・PostgreSQL・SQL Serverをそれぞれインストール済であること。

Oracle・MySQL・PostgreSQLのインストール手順は下記記事を参照のこと。

Windows端末にMySQL、PostgreSQL、Oracleをインストールしてみた今回はいろいろな種類のデータベースを使ってみたかったので、Windows端末に、MySQL、PostgreSQL、Oracleそれぞれの...

また、SQL Serverのインストール手順は下記記事を参照のこと。

SQL Serverのデータ分析を行う環境構築を行った(1)今回は、SQL Serverのデータ分析を行う環境構築として、SQL Server・SQL Server Management Stud...

やってみたこと

  1. Oracleの場合の実行結果
  2. MySQLの場合の実行結果
  3. PostgreSQLの場合の実行結果
  4. SQL Serverの場合の実行結果
  5. Javaプログラムによる実行結果

Oracleの場合の実行結果

1) 0で除算した場合、以下のようにエラーになる

Oracle_0で除算

2) NULL値で除算した場合、以下のようにNULL値が返される

Oracle_nullで除算

3) 0で除算しようとした場合に、0をNULL値に置き換えて除算した結果は以下の通り

Oracle_0をnullに置き換えて除算

なお、上記SQL文を実行する前に、workテーブルにカラムAを作成し、A=0,A=1のデータを追加しておくものとする。他のDBについても同様とする。



MySQLの場合の実行結果

1) 0で除算した場合、以下のようにNULL値が返される   ※他のDBと違うので要注意

Mysql_0で除算

2) NULL値で除算した場合、以下のようにNULL値が返される

MySQL_nullで除算

3) 0で除算しようとした場合に、0をNULL値に置き換えて除算した結果は以下の通り

MySQL_0をnullに置き換えて除算



PostgreSQLの場合の実行結果

1) 0で除算した場合、以下のようにエラーになる

Postgresql_0で除算

2) NULL値で除算した場合、以下のようにNULL値が返される

Postgresql_nullで除算

3) 0で除算しようとした場合に、0をNULL値に置き換えて除算した結果は以下の通り

Postgresql_0をnullに置き換えて除算



SQL Serverの場合の実行結果

1) 0で除算した場合、以下のようにエラーになる

SQLServer_0で除算

2) NULL値で除算した場合、以下のようにNULL値が返される

SQLServer_nullで除算

3) 0で除算しようとした場合に、0をNULL値に置き換えて除算した結果は以下の通り

SQLServer_0をnullに置き換えて除算



Javaプログラムによる実行結果

Javaプログラムで0による除算、NULL値による除算を行うとどうなるかも気になったので実行してみた。結果、両方ともエラーになることが確認できた。

1) 0で除算した場合、以下のようにエラー(ArithmeticException)になる
Java_0で除算_プログラム
Java_0で除算_実行結果

2) NULL値で除算した場合、以下のようにエラー(NullPointerException)になる
Java_nullで除算_プログラム
Java_nullで除算_実行結果

なお、上記はJDK 1.8をインストール済の環境で実行している。