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