Oracle SQL 関数 : POWER : べき乗を取得
numberRet := POWER( number2, number1 ); POWER関数は[number2]を[number1]乗した値を戻します。([number2]が負の場合[number1]は整数指定) numberRet : 通常は NUMBER型 のべき乗値が戻されます。 何れかの引数がBINARY_FLOATまたはBINARY_DOUBLEの場合BINARY_DOUBLEを戻します。
以下に「2」のべき乗を計算する POWER 関数の例を示します。
SQL> SELECT 2 POWER(2, 0) AS "POWER(2, 0)" 3 ,POWER(2, 1) AS "POWER(2, 1)" 4 ,POWER(2, 2) AS "POWER(2, 2)" 5 ,POWER(2, 3) AS "POWER(2, 3)" 6 ,POWER(2,-1) AS "POWER(2,-1)" 7 ,POWER(2,-2) AS "POWER(2,-2)" 8 ,POWER(2,-3) AS "POWER(2,-3)" 9 FROM DUAL; POWER(2, 0) POWER(2, 1) POWER(2, 2) POWER(2, 3) POWER(2,-1) POWER(2,-2) POWER(2,-3) ----------- ----------- ----------- ----------- ----------- ----------- ----------- 1 2 4 8 .5 .25 .125
[number1]が負の場合は「1 / POWER(number, (number1 * -1))」の計算と同じになります。
[number1]が整数では無い場合、例えば[1/2]であれば2乗根となります。
SQL> SELECT 2 POWER(2, 1/2) AS "2の2乗根" 3 ,POWER(2, 1/3) AS "2の3乗根" 4 ,POWER(2, 1/4) AS "2の4乗根" 5 ,POWER(4, 1/2) AS "4の2乗根" 6 ,POWER(8, 1/3) AS "8の3乗根" 7 ,POWER(16,1/4) AS "16の4乗根" 8 FROM DUAL; 2の2乗根 2の3乗根 2の4乗根 4の2乗根 8の3乗根 16の4乗根 ---------- ---------- ---------- ---------- ---------- ---------- 1.41421356 1.25992105 1.18920712 2 2 2
2乗根の解が虚数になる場合、[number2]の数値が「NUMBER型」の場合エラーが発生します。
また、[number2]の数値が「BINARY_DOUBLE」「BINARY_FLOAT」の場合には「Nan」が返されます。
SQL> SELECT 2 POWER(-1, 1/2) AS "-1の平方根は虚数" 3 FROM DUAL; POWER(-1, 1/2) AS "-1の平方根は虚数" * 行2でエラーが発生しました。: ORA-01428: 引数'-1'が有効範囲外です SQL> SELECT 2 POWER(TO_BINARY_DOUBLE(-1), 1/2) AS "-1の平方根は虚数" 3 ,POWER(TO_BINARY_FLOAT (-1), 1/2) AS "-1の平方根は虚数" 4 FROM DUAL; -1の平方根は虚数 -1の平方根は虚数 ---------------- ---------------- Nan Nan