En MariaDB, LOG()
es una función integrada que devuelve el logaritmo natural de su argumento a una base dada.
Se puede llamar con uno o dos argumentos:
- Cuando se llama con un argumento, devuelve el logaritmo natural del argumento.
- Cuando se llama con dos argumentos, devuelve el logaritmo del segundo argumento a la base especificada en el primer argumento.
Cuando se llama con un solo argumento, LOG()
es el inverso de EXP()
, y es lo mismo que usar LN()
.
Sintaxis
La función se puede utilizar de las dos formas siguientes:
LOG(X)
LOG(B,X)
Al usar la primera sintaxis, la función devuelve el logaritmo natural de X
.
Al usar la segunda sintaxis, la función devuelve el logaritmo de X
a la base B
.
Ejemplo:sintaxis de argumento único
Aquí hay un ejemplo que usa la sintaxis de un solo argumento:
SELECT LOG(3);
Resultado:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Esto es lo que obtenemos cuando aprobamos e :
SELECT LOG(2.718281828459045);
Resultado:
+------------------------+ | LOG(2.718281828459045) | +------------------------+ | 1 | +------------------------+
El número e , también conocido como número de Euler, es una constante matemática aproximadamente igual a 2.718281828459045… y así sucesivamente.
Ejemplo:sintaxis de dos argumentos
Aquí hay un ejemplo que usa la sintaxis de dos argumentos:
SELECT LOG(10, 3);
Resultado:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Aquí está el mismo valor usando diferentes bases:
SELECT
LOG(8, 3),
LOG(16, 3),
LOG(2, 3);
Resultado:
+--------------------+--------------------+--------------------+ | LOG(8, 3) | LOG(16, 3) | LOG(2, 3) | +--------------------+--------------------+--------------------+ | 0.5283208335737188 | 0.3962406251802891 | 1.5849625007211563 | +--------------------+--------------------+--------------------+
Rangos de argumentos
Si X
es menor o igual que 0
, luego NULL
se devuelve con una advertencia.
SELECT
LOG(0),
LOG(-1),
LOG(16, -3),
LOG(2, -3);
Resultado:
+--------+---------+-------------+------------+ | LOG(0) | LOG(-1) | LOG(16, -3) | LOG(2, -3) | +--------+---------+-------------+------------+ | NULL | NULL | NULL | NULL | +--------+---------+-------------+------------+ 1 row in set, 4 warnings (0.001 sec)
Revisemos las advertencias:
SHOW WARNINGS;
Resultado:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Además, la base debe ser mayor que 1
. Si no, NULL
se devuelve:
SELECT
LOG(0, 3),
LOG(1, 3),
LOG(-1, 3);
Resultado:
+-----------+-----------+------------+ | LOG(0, 3) | LOG(1, 3) | LOG(-1, 3) | +-----------+-----------+------------+ | NULL | NULL | NULL | +-----------+-----------+------------+ 1 row in set, 3 warnings (0.000 sec)
Revisa las advertencias:
SHOW WARNINGS;
Resultado:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Argumentos no numéricos
Este es un ejemplo de lo que sucede cuando proporcionamos argumentos no numéricos:
SELECT LOG('Homer', 'Simpson');
Resultado:
+-------------------------+ | LOG('Homer', 'Simpson') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 2 warnings (0.000 sec)
Veamos la advertencia:
SHOW WARNINGS;
Resultado:
+---------+------+-------------------------------------------+ | Level | Code | Message | +---------+------+-------------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Homer' | | Warning | 1365 | Division by 0 | +---------+------+-------------------------------------------+
Argumentos nulos
LOG()
devuelve null
si algún argumento es null
:
SELECT
LOG(null),
LOG(null, 3),
LOG(16, null),
LOG(null, null);
Resultado:
+-----------+--------------+---------------+-----------------+ | LOG(null) | LOG(null, 3) | LOG(16, null) | LOG(null, null) | +-----------+--------------+---------------+-----------------+ | NULL | NULL | NULL | NULL | +-----------+--------------+---------------+-----------------+
Argumentos faltantes
Llamando a LOG()
con el número incorrecto de argumentos, o sin ningún argumento da como resultado un error:
SELECT LOG();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'
Y:
SELECT LOG(10, 2, 3);
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'