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: