(2)MOD関数
(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でまた、お会いしましょう!
- この記事のキーワード