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

Función LOG() en Oracle

En Oracle, el LOG() función devuelve el logaritmo, base n2 , de n1 , donde n2 es el primer argumento y n1 es el segundo.

Sintaxis

La sintaxis es así:

LOG(n2, n1)

Donde n2 puede ser cualquier valor positivo que no sea 0 o 1 y n1 es cualquier valor positivo.

Ejemplo

He aquí un ejemplo:

SELECT LOG(16, 73)
FROM DUAL;

Resultado:

                                 LOG(16,73) 
___________________________________________ 
   1.54745613972000430746600429203996036707

Valores negativos

Los valores negativos dan como resultado un error "fuera de rango":

SELECT LOG(-16, 73)
FROM DUAL;

Resultado:

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

Lo mismo para el segundo argumento:

SELECT LOG(16, -73)
FROM DUAL;

Resultado:

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

Cero

Pasando 0 también da como resultado un error "fuera de rango":

SELECT LOG(0, 73)
FROM DUAL;

Resultado:

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

Y de nuevo, lo mismo se aplica al segundo argumento:

SELECT LOG(16, 0)
FROM DUAL;

Resultado:

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

Pasando 1

Pasando 1 para el segundo argumento da como resultado 0 :

SELECT LOG(16, 1)
FROM DUAL;

Resultado:

   LOG(16,1) 
____________ 
           0

Pasando 1 para el primer argumento da como resultado un error "fuera de rango":

SELECT LOG(1, 2)
FROM DUAL;

Resultado:

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

Expresiones

Los argumentos pueden incluir expresiones como esta:

SELECT LOG(10 + 6, 12 * 30)
FROM DUAL;

Resultado:

                            LOG(10+6,12*30) 
___________________________________________ 
   2.12296327408241867769444932934625579835 

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 LOG('Homer', 'Symptom')
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT LOG('Homer', 'Symptom')
FROM DUAL
Error report -
ORA-01722: invalid number

Argumentos nulos

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

SET NULL 'null';

SELECT 
    LOG(null, 1024),
    LOG(16, null),
    LOG(null, null)
FROM DUAL;

Resultado:

   LOG(NULL,1024)    LOG(16,NULL)    LOG(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 LOG() con el número incorrecto de argumentos, o sin ningún argumento da como resultado un error:

SELECT LOG()
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT LOG()
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:

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

Resultado:

Error starting at line : 1 in command -
SELECT LOG(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: