Oracleでは、MOD()
関数はモジュロ演算を返します。つまり、最初の引数の余りを2番目の引数で割った値を返します。
構文
構文は次のようになります:
MOD(n2, n1)
各引数は、任意の数値データ型、または暗黙的に数値データ型に変換できる任意の非数値データ型にすることができます。
例
次に例を示します:
SELECT MOD(100, 6)
FROM DUAL;
結果:
MOD(100,6) _____________ 4
Oracle MOD()と従来のモジュラス
OracleのMOD()
n1
の積の場合、関数は従来の数学モジュラス関数とは異なる動作をします。 およびn2
負です。
これらのそれぞれがどのように異なるかを示す例を次に示します。
SELECT
MOD(100, 6) AS "Oracle MOD()",
100 - 6 * FLOOR(100/6) AS "Classical"
FROM DUAL
UNION ALL
SELECT
MOD(100, -6),
100 - -6 * FLOOR(100/-6)
FROM DUAL
UNION ALL
SELECT
MOD(-100, 6),
-100 - 6 * FLOOR(-100/6)
FROM DUAL
UNION ALL
SELECT
MOD(-100, -6),
-100 - -6 * FLOOR(-100/-6)
FROM DUAL;
結果:
Oracle MOD() Classical
____________ _________
4 4
4 -2
-4 2
-4 -4
非数値引数
引数は、任意の数値データ型、または暗黙的に数値データ型に変換できる任意の非数値データ型にすることができます。
引数がその基準を満たさない場合に何が起こるかの例を次に示します。
SELECT MOD('Homer', 'Symptom')
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT MOD('Homer', 'Symptom') FROM DUAL Error report - ORA-01722: invalid number
ヌル引数
MOD()
null
を返します 引数がnull
の場合 :
SET NULL 'null';
SELECT
MOD(null, 16),
MOD(1024, null),
MOD(null, null)
FROM DUAL;
結果:
MOD(NULL,16) MOD(1024,NULL) MOD(NULL,NULL) _______________ _________________ _________________ null null null
デフォルトでは、SQLclおよびSQL * Plusは、SQL SELECT
の結果としてnull値が発生するたびに空白を返します。 声明。
ただし、SET NULL
は使用できます 返される別の文字列を指定します。ここでは、文字列null
を指定しました 返却する必要があります。
引数がありません
MOD()
の呼び出し 引数の数が間違っているか、引数がない場合、エラーが発生します:
SELECT MOD()
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT MOD() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
そして:
SELECT MOD(10, 2, 3)
FROM DUAL;
結果:
Error starting at line : 1 in command - SELECT MOD(10, 2, 3) FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: