sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona LOG() en MariaDB

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'