sql >> Base de Datos >  >> RDS >> Oracle

Función POWER() en Oracle

En Oracle, el POWER() función devuelve su primer argumento elevado a la potencia de su segundo argumento.

Sintaxis

La sintaxis es así:

POWER(n2, n1)

Cada argumento puede ser cualquier tipo de dato numérico o cualquier tipo de dato no numérico que se pueda convertir implícitamente a un tipo de dato numérico.

Ambos argumentos pueden ser cualquier número, sin embargo, si n2 es negativo, entonces n1 debe ser un número entero.

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SELECT POWER(8, 2) 
FROM DUAL;

Resultado:

   POWER(8,2) 
_____________ 
           64 

Y aquí está usando una parte fraccionaria en el segundo argumento:

SELECT POWER(8, 2.5) 
FROM DUAL;

Resultado:

                              POWER(8,2.5) 
__________________________________________ 
   181.01933598375616624661615669884135406 

Sin embargo, usar una parte fraccionaria solo es posible cuando el primer argumento es positivo.

Valores negativos

Como se mencionó, si el primer argumento es negativo, entonces el segundo argumento debe ser un número entero:

SELECT POWER(-8, 2) 
FROM DUAL;

Resultado:

   POWER(-8,2) 
______________ 
            64 

Esto es lo que sucede cuando el segundo número no es un número entero:

SELECT POWER(-8, 2.5) 
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT POWER(-8, 2.5) 
FROM DUAL
Error report -
ORA-01428: argument '-8' is out of range

Argumentos no numéricos

Los argumentos pueden ser cualquier tipo de dato numérico o cualquier tipo de dato no numérico que se pueda convertir implícitamente a un tipo de dato numérico.

Aquí hay un ejemplo de lo que sucede cuando los argumentos no satisfacen ese criterio:

SELECT POWER('Gosh', 'Dang')
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT POWER('Gosh', 'Dang')
FROM DUAL
Error report -
ORA-01722: invalid number

Argumentos nulos

POWER() devuelve null si algún argumento es null :

SET NULL 'null';

SELECT 
    POWER(null, 3),
    POWER(8, null),
    POWER(null, null)
FROM DUAL;

Resultado:

   POWER(NULL,3)    POWER(8,NULL)    POWER(NULL,NULL) 
________________ ________________ ___________________ 
            null             null                null 

De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que se produce un valor nulo como resultado de un SQL SELECT declaración.

Sin embargo, puede usar SET NULL para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null debe ser devuelto.

Argumentos faltantes

Llamando a POWER() sin ningún argumento da como resultado un error:

SELECT POWER()
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT POWER()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

Y lo mismo se aplica cuando se llama con demasiados argumentos:

SELECT POWER(10, 2, 3)
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT POWER(10, 2, 3)
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action: