Oracle SQL 関数 : LOG : 対数を取得
numberRet := LOG( number2, number1 );
LOG関数は[number2]を基底とする[number1]の対数の値を戻します。
numberRet : 通常は NUMBER型 の対数値が戻されます。
何れかの引数がBINARY_FLOATまたはBINARY_DOUBLEの場合BINARY_DOUBLEを戻します。
以下に基底が「10」の常用対数を計算する LOG 関数の例を示します。
SQL> SELECT
2 LOG(10, 1) AS "log10(1)"
3 ,LOG(10, 2) AS "log10(2)"
4 ,LOG(10, 10) AS "log10(10)"
5 ,LOG(10, 100) AS "log10(100)"
6 ,LOG(10, 1000) AS "log10(1000)"
7 FROM DUAL;
log10(1) log10(2) log10(10) log10(100) log10(1000)
---------- ---------- ---------- ---------- -----------
0 .301029996 1 2 3
基底が「e」の自然対数を計算する LOG 関数の例を示します。
「e」の値は EXP 関数を用います。
SQL> SELECT
2 EXP(1) AS "eの値"
3 ,LOG(EXP(1), 1) AS "loge(1)"
4 ,LOG(EXP(1), 2) AS "loge(2)"
5 ,LOG(EXP(1), EXP(1)) AS "loge(e)"
6 ,LOG(EXP(1), EXP(1) * EXP(1)) AS "loge(e * e)"
7 ,LOG(EXP(1), EXP(1) * EXP(1) * EXP(1)) AS "loge(e * e * e)"
8 FROM DUAL;
eの値 loge(1) loge(2) loge(e) loge(e * e) loge(e * e * e)
---------- ---------- ---------- ---------- ----------- ---------------
2.71828183 0 .693147181 1 2 3
LOG 関数の引数[number1]、[number2]ともに負の値はエラーが発生します。
SQL> SELECT
2 LOG(10, -1)
3 FROM DUAL;
LOG(10, -1)
*
行2でエラーが発生しました。:
ORA-01428: 引数'-1'が有効範囲外です
SQL> SELECT
2 LOG(-10, 1)
3 FROM DUAL;
LOG(-10, 1)
*
行2でエラーが発生しました。:
ORA-01428: 引数'-10'が有効範囲外です