連載 [第3回] :
  初心者のための SQL-BOOTCAMP

よく利用される「算術関数」について

2022年12月15日(木)
久保 司

(2)MOD関数

MOD関数は剰余を求める関数ですが、パラメータが以下の場合は剰余以外の結果が返されます。

  • 数値Y(割る数値)に0を設定した場合はNULLを返す
  • 数値X(割られる数値)、数値Y(割る数値)のどちらか、または両方にNULLを設定した場合もNULLを返す

実際に確認してみましょう。

SELECT MOD(10,3);
SELECT MOD(10,0);
SELECT MOD(10,NULL);
SELECT MOD(NULL,5);
SELECT MOD(NULL,NULL);

最初のクエリ以外の結果には、見た目ではわかりませんがNULLが返されています。

もちろん、パラメータにはテーブルの項目を指定できます。テスト用のテーブル「mod_test」を作成して、データを挿入してみましょう。

【CREATEコマンド】
CREATE TABLE mod_test (id INTEGER,val_x REAL,val_y REAL);
【INSERTコマンド】
INSERT INTO mod_test VALUES
(1,10,3)
,(2,10.5,2.1)
,(3,111,13)
,(4,13.3,3.1)
,(5,100,0);

テーブルの内容を確認してみます。

SELECT * FROM mod_test;

それでは、項目val_xを項目val_yで割ってみましょう。

SELECT id,val_x,val_y,MOD(val_x,val_y) FROM mod_test;

id=5のデータはval_yの値が0となっているので、結果はNULLが返されています。

(3)ABS関数

ABS関数は数値の絶対値を返す関数です。パラメータには数値やテーブル項目、および計算式を記入できます。また、数値に変換できない(数値以外)項目を指定した場合は0.0を返します。

パラメータを直接指定したパターンは、以下のようになります。

SELECT ABS(-10);
SELECT ABS(15 * -5);
SELECT ABS('moji');
SELECT ABS(-13.9);

3番目のクエリでは文字を指定しているため、0.0が返されています。こちらも、項目を指定した場合を確認するために、テーブル「abs_test」を作成してデータを挿入してみましょう。

【CREATEコマンド】
CREATE TABLE abs_test (id INTEGER,val_x TEXT);
【INSERTコマンド】
INSERT INTO abs_test VALUES
(1,'10')
,(2,'-22')
,(3,'-15.2')
,(4,'test')
,(5,NULL);

作成したテーブルの内容を確認してみます。

SELECT * FROM abs_test;

ここで、作成したテーブルからABS関数でval_xの絶対値を取得してみると、どうなるでしょうか。

SELECT id,val_x,ABS(val_x) FROM abs_test;

id=4のデータは数値に変換できないため0.0が返され、id=5のデータはNULL値が設定されていたためNULLが返されています。

おわりに

今回は、よく使われる3つの算術関数ついて説明しました。データに数値以外の値が入っている場合は注意が必要です。前回でも説明しましたが、算術関数を使用する場合も項目のNULL値には気を付けてください。

それでは、次回のSQL-BOOTCAMPでまた、お会いしましょう!

株式会社システムインテグレータ
長年にわたり、基幹システム構築プロジェクトにおいて全工程を経験。その際、OracleやSQLServer等のDBMSでSQLを使用したプログラム開発を実施。現在は、製品企画室でスキル判定サービス「TOPSIC-SQL」のコンテンツ作成を主に担当。

連載バックナンバー

データベース技術解説
第10回

実践! 「TOPSIC SQL CONTEST」の練習問題にチャレンジしよう

2023/7/25
最終回となる今回は、これまでの訓練の成果を計るために、SQLの腕試しができるオンラインコンテスト「TOPSIC SQL CONTEST(TSC)」の練習問題にチャレンジしてみましょう。
データベース技術解説
第9回

神出鬼没!サブクエリについて(Part.2)

2023/6/29
第9回となる今回は、前回に引き続き、SQL文の中でも神出鬼没でさまざまな出現パターンを持つサブクエリについて解説していきます。
データベース技術解説
第8回

神出鬼没! サブクエリについて(Part.1)

2023/5/30
第8回となる今回からは、SQL文の中でも神出鬼没でさまざまな出現パターンを持つサブクエリについて解説していきます。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています