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'