Oracle SQL 関数 : MOD : 剰余演算
numberRet := MOD( number1 , number2 );
MODは number1 を number2 で割った余りを戻します。 number2 が0の場合は number1 を返します。
numberRet の値は、数値の優先順位が最も高い引数を判断し、
残りの引数をそのデータ型に暗黙的に変換して、そのデータ型を戻します。
以下に簡単な例を示します。(「11」を「4」で割った時の余りの計算です。)
SQL> SELECT MOD(11, 4) FROM DUAL; |
以下に、被除数が負値の場合や、除数が負値の場合、及び実数での「MOD」の結果を示します。
2 MOD( 11, 0) AS "ZERO除算" |
3 ,MOD(-11, 4) AS "被除数が負" |
4 ,MOD( 11, -4) AS "除数が負" |
6 ,MOD( 11.1, 4) AS "被除数が実数" |
7 ,MOD( 11, 4.1) AS "除数が実数" |
ZERO除算 被除数が負 除数が負 共に負 被除数が実数 除数が実数 |
MOD 関数の戻り値の符号は、被除数の符号と同じになります。これは通常の除算の余りの計算と一緒だと思います。
尚、
MOD 関数の計算は以下の計算式と結果が同じになります。
numberRet := number1 - number2 * TRUNC(number1 / number2)
先ほどの
MOD 関数を置き換えてみます。
2 (-11) - ( 4) * TRUNC((-11) / ( 4)) AS "被除数が負" |
3 ,( 11) - (-4) * TRUNC(( 11) / (-4)) AS "除数が負" |
4 ,(-11) - (-4) * TRUNC((-11) / (-4)) AS "共に負" |
5 ,( 11.1) - ( 4) * TRUNC(( 11.1) / (4)) AS "被除数が実数" |
6 ,( 11) - (4.1) * TRUNC((11) / (4.1)) AS "除数が実数" |
被除数が負 除数が負 共に負 被除数が実数 除数が実数 |
本書用のWebアプリを使ってSQLを実行し学習していきます。初心者の方に分かりやすく、図表を多く使って解説されています。 学習の最後には200問越えのドリルが付いていてSQLのスキルが試せる様になっています。