MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona LOG() in MariaDB

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'