In MariaDB, LOG()
è una funzione incorporata che restituisce il logaritmo naturale del suo argomento su una data base.
Può essere chiamato con uno o due argomenti:
- Quando viene chiamato con un argomento, restituisce il logaritmo naturale dell'argomento.
- Quando chiamato con due argomenti, restituisce il logaritmo del secondo argomento alla base specificata nel primo argomento.
Quando viene chiamato con un singolo argomento, LOG()
è l'inverso di EXP()
ed è come usare LN()
.
Sintassi
La funzione può essere utilizzata nei seguenti due modi:
LOG(X)
LOG(B,X)
Quando si utilizza la prima sintassi, la funzione restituisce il logaritmo naturale di X
.
Quando si utilizza la seconda sintassi, la funzione restituisce il logaritmo di X
alla base B
.
Esempio:sintassi di argomento singolo
Ecco un esempio che utilizza la sintassi dell'argomento singolo:
SELECT LOG(3);
Risultato:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Ecco cosa otteniamo quando superiamo e :
SELECT LOG(2.718281828459045);
Risultato:
+------------------------+ | LOG(2.718281828459045) | +------------------------+ | 1 | +------------------------+
Il numero e , noto anche come numero di Eulero, è una costante matematica approssimativamente uguale a 2.718281828459045... e così via.
Esempio:sintassi di due argomenti
Ecco un esempio che utilizza la sintassi dei due argomenti:
SELECT LOG(10, 3);
Risultato:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Ecco lo stesso valore utilizzando basi diverse:
SELECT
LOG(8, 3),
LOG(16, 3),
LOG(2, 3);
Risultato:
+--------------------+--------------------+--------------------+ | LOG(8, 3) | LOG(16, 3) | LOG(2, 3) | +--------------------+--------------------+--------------------+ | 0.5283208335737188 | 0.3962406251802891 | 1.5849625007211563 | +--------------------+--------------------+--------------------+
Intervalli di argomenti
Se X
è minore o uguale a 0
, quindi NULL
viene restituito con un avviso.
SELECT
LOG(0),
LOG(-1),
LOG(16, -3),
LOG(2, -3);
Risultato:
+--------+---------+-------------+------------+ | LOG(0) | LOG(-1) | LOG(16, -3) | LOG(2, -3) | +--------+---------+-------------+------------+ | NULL | NULL | NULL | NULL | +--------+---------+-------------+------------+ 1 row in set, 4 warnings (0.001 sec)
Controlliamo gli avvisi:
SHOW WARNINGS;
Risultato:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Inoltre, la base deve essere maggiore di 1
. In caso contrario, NULL
viene restituito:
SELECT
LOG(0, 3),
LOG(1, 3),
LOG(-1, 3);
Risultato:
+-----------+-----------+------------+ | LOG(0, 3) | LOG(1, 3) | LOG(-1, 3) | +-----------+-----------+------------+ | NULL | NULL | NULL | +-----------+-----------+------------+ 1 row in set, 3 warnings (0.000 sec)
Controlla gli avvisi:
SHOW WARNINGS;
Risultato:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Argomenti non numerici
Ecco un esempio di cosa succede quando forniamo argomenti non numerici:
SELECT LOG('Homer', 'Simpson');
Risultato:
+-------------------------+ | LOG('Homer', 'Simpson') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 2 warnings (0.000 sec)
Vediamo l'avviso:
SHOW WARNINGS;
Risultato:
+---------+------+-------------------------------------------+ | Level | Code | Message | +---------+------+-------------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Homer' | | Warning | 1365 | Division by 0 | +---------+------+-------------------------------------------+
Argomenti nulli
LOG()
restituisce null
se un argomento è null
:
SELECT
LOG(null),
LOG(null, 3),
LOG(16, null),
LOG(null, null);
Risultato:
+-----------+--------------+---------------+-----------------+ | LOG(null) | LOG(null, 3) | LOG(16, null) | LOG(null, null) | +-----------+--------------+---------------+-----------------+ | NULL | NULL | NULL | NULL | +-----------+--------------+---------------+-----------------+
Argomenti mancanti
Chiamando LOG()
con il numero errato di argomenti o senza argomenti genera un errore:
SELECT LOG();
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'
E:
SELECT LOG(10, 2, 3);
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'