MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como LOG() funciona no MariaDB


No MariaDB, LOG() é uma função interna que retorna o logaritmo natural de seu argumento para uma determinada base.

Pode ser chamado com um ou dois argumentos:
  • Quando chamado com um argumento, retorna o logaritmo natural do argumento.
  • Quando chamado com dois argumentos, retorna o logaritmo do segundo argumento para a base especificada no primeiro argumento.

Quando chamado com um único argumento, LOG() é o inverso de EXP() , e é o mesmo que usar LN() .

Sintaxe


A função pode ser usada das duas maneiras a seguir:
LOG(X)
LOG(B,X)

Ao usar a primeira sintaxe, a função retorna o logaritmo natural de X .

Ao usar a segunda sintaxe, a função retorna o logaritmo de X para a base B .

Exemplo – Sintaxe de argumento único


Aqui está um exemplo que usa a sintaxe de argumento único:
SELECT LOG(3);

Resultado:
+--------------------+
| LOG(3)             |
+--------------------+
| 1.0986122886681098 |
+--------------------+

Aqui está o que recebemos quando passamos por e :
SELECT LOG(2.718281828459045);

Resultado:
+------------------------+
| LOG(2.718281828459045) |
+------------------------+
|                      1 |
+------------------------+

O número e , também conhecido como número de Euler, é uma constante matemática aproximadamente igual a 2,718281828459045... e assim por diante.

Exemplo – Sintaxe de dois argumentos


Aqui está um exemplo que usa a sintaxe de dois argumentos:
SELECT LOG(10, 3);

Resultado:
+--------------------+
| LOG(3)             |
+--------------------+
| 1.0986122886681098 |
+--------------------+

Aqui está o mesmo valor usando bases diferentes:
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 |
+--------------------+--------------------+--------------------+

Intervalos de argumentos


Se X é menor ou igual a 0 , então NULL é retornado com um aviso.
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)

Vamos verificar os avisos:
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 |
+---------+------+---------------+

Além disso, a base deve ser maior que 1 . Caso contrário, NULL é retornado:
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)

Confira os avisos:
SHOW WARNINGS;

Resultado:
+---------+------+---------------+
| Level   | Code | Message       |
+---------+------+---------------+
| Warning | 1365 | Division by 0 |
| Warning | 1365 | Division by 0 |
| Warning | 1365 | Division by 0 |
+---------+------+---------------+

Argumentos não numéricos


Aqui está um exemplo do que acontece quando fornecemos argumentos não numéricos:
SELECT LOG('Homer', 'Simpson');

Resultado:
+-------------------------+
| LOG('Homer', 'Simpson') |
+-------------------------+
|                    NULL |
+-------------------------+
1 row in set, 2 warnings (0.000 sec)

Vejamos o aviso:
SHOW WARNINGS;

Resultado:
+---------+------+-------------------------------------------+
| Level   | Code | Message                                   |
+---------+------+-------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'Homer' |
| Warning | 1365 | Division by 0                             |
+---------+------+-------------------------------------------+

Argumentos nulos


LOG() retorna null se algum argumento for 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 ausentes


Chamando LOG() com o número errado de argumentos ou sem argumentos resulta em um erro:
SELECT LOG();

Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'

E:
SELECT LOG(10, 2, 3);

Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'