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