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