連載 [第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でまた、お会いしましょう!
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。