In MariaDB, LOG()
is een ingebouwde functie die de natuurlijke logaritme van zijn argument retourneert naar een gegeven grondtal.
Het kan worden aangeroepen met een of twee argumenten:
- Wanneer aangeroepen met één argument, wordt de natuurlijke logaritme van het argument geretourneerd.
- Als het wordt aangeroepen met twee argumenten, wordt de logaritme van het tweede argument geretourneerd naar het grondtal dat is opgegeven in het eerste argument.
Wanneer aangeroepen met een enkel argument, LOG()
is het omgekeerde van EXP()
, en het is hetzelfde als het gebruik van LN()
.
Syntaxis
De functie kan op de volgende twee manieren worden gebruikt:
LOG(X)
LOG(B,X)
Wanneer de eerste syntaxis wordt gebruikt, retourneert de functie de natuurlijke logaritme van X
.
Bij gebruik van de tweede syntaxis, retourneert de functie de logaritme van X
naar de basis B
.
Voorbeeld – Syntaxis van één argument
Hier is een voorbeeld dat de syntaxis van één argument gebruikt:
SELECT LOG(3);
Resultaat:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Dit is wat we krijgen als we e passeren :
SELECT LOG(2.718281828459045);
Resultaat:
+------------------------+ | LOG(2.718281828459045) | +------------------------+ | 1 | +------------------------+
Het nummer e , ook bekend als het getal van Euler, is een wiskundige constante die ongeveer gelijk is aan 2,718281828459045... enzovoort.
Voorbeeld – Syntaxis met twee argumenten
Hier is een voorbeeld dat de syntaxis van twee argumenten gebruikt:
SELECT LOG(10, 3);
Resultaat:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Hier is dezelfde waarde met verschillende basen:
SELECT
LOG(8, 3),
LOG(16, 3),
LOG(2, 3);
Resultaat:
+--------------------+--------------------+--------------------+ | LOG(8, 3) | LOG(16, 3) | LOG(2, 3) | +--------------------+--------------------+--------------------+ | 0.5283208335737188 | 0.3962406251802891 | 1.5849625007211563 | +--------------------+--------------------+--------------------+
Argumentbereiken
Als X
is kleiner dan of gelijk aan 0
, dan NULL
wordt geretourneerd met een waarschuwing.
SELECT
LOG(0),
LOG(-1),
LOG(16, -3),
LOG(2, -3);
Resultaat:
+--------+---------+-------------+------------+ | LOG(0) | LOG(-1) | LOG(16, -3) | LOG(2, -3) | +--------+---------+-------------+------------+ | NULL | NULL | NULL | NULL | +--------+---------+-------------+------------+ 1 row in set, 4 warnings (0.001 sec)
Laten we de waarschuwingen eens bekijken:
SHOW WARNINGS;
Resultaat:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Ook moet het grondtal groter zijn dan 1
. Zo niet, NULL
wordt geretourneerd:
SELECT
LOG(0, 3),
LOG(1, 3),
LOG(-1, 3);
Resultaat:
+-----------+-----------+------------+ | LOG(0, 3) | LOG(1, 3) | LOG(-1, 3) | +-----------+-----------+------------+ | NULL | NULL | NULL | +-----------+-----------+------------+ 1 row in set, 3 warnings (0.000 sec)
Controleer de waarschuwingen:
SHOW WARNINGS;
Resultaat:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Niet-numerieke argumenten
Hier is een voorbeeld van wat er gebeurt als we niet-numerieke argumenten geven:
SELECT LOG('Homer', 'Simpson');
Resultaat:
+-------------------------+ | LOG('Homer', 'Simpson') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 2 warnings (0.000 sec)
Laten we eens kijken naar de waarschuwing:
SHOW WARNINGS;
Resultaat:
+---------+------+-------------------------------------------+ | Level | Code | Message | +---------+------+-------------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Homer' | | Warning | 1365 | Division by 0 | +---------+------+-------------------------------------------+
Nullargumenten
LOG()
retourneert null
als een argument null
is :
SELECT
LOG(null),
LOG(null, 3),
LOG(16, null),
LOG(null, null);
Resultaat:
+-----------+--------------+---------------+-----------------+ | LOG(null) | LOG(null, 3) | LOG(16, null) | LOG(null, null) | +-----------+--------------+---------------+-----------------+ | NULL | NULL | NULL | NULL | +-----------+--------------+---------------+-----------------+
Ontbrekende argumenten
LOG()
. aanroepen met het verkeerde aantal argumenten, of zonder argumenten resulteert in een fout:
SELECT LOG();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'
En:
SELECT LOG(10, 2, 3);
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'