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'が有効範囲外です