I MariaDB, LOG()
är en inbyggd funktion som returnerar den naturliga logaritmen för dess argument till en given bas.
Den kan anropas med ett eller två argument:
- När det anropas med ett argument returneras den naturliga logaritmen för argumentet.
- När anropas med två argument, returnerar logaritmen för det andra argumentet till basen som anges i det första argumentet.
När anropas med ett enda argument, LOG()
är inversen av EXP()
, och det är samma sak som att använda LN()
.
Syntax
Funktionen kan användas på följande två sätt:
LOG(X)
LOG(B,X)
När du använder den första syntaxen returnerar funktionen den naturliga logaritmen för X
.
När du använder den andra syntaxen returnerar funktionen logaritmen för X
till basen B
.
Exempel – Syntax för enstaka argument
Här är ett exempel som använder syntaxen för enstaka argument:
SELECT LOG(3);
Resultat:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Det här är vad vi får när vi passerar e :
SELECT LOG(2.718281828459045);
Resultat:
+------------------------+ | LOG(2.718281828459045) | +------------------------+ | 1 | +------------------------+
Siffran e , även känd som Eulers tal, är en matematisk konstant som är ungefär lika med 2,718281828459045... och så vidare.
Exempel – Syntax med två argument
Här är ett exempel som använder syntaxen för två argument:
SELECT LOG(10, 3);
Resultat:
+--------------------+ | LOG(3) | +--------------------+ | 1.0986122886681098 | +--------------------+
Här är samma värde med olika baser:
SELECT
LOG(8, 3),
LOG(16, 3),
LOG(2, 3);
Resultat:
+--------------------+--------------------+--------------------+ | LOG(8, 3) | LOG(16, 3) | LOG(2, 3) | +--------------------+--------------------+--------------------+ | 0.5283208335737188 | 0.3962406251802891 | 1.5849625007211563 | +--------------------+--------------------+--------------------+
Argumentintervall
Om X
är mindre än eller lika med 0
, sedan NULL
returneras med en varning.
SELECT
LOG(0),
LOG(-1),
LOG(16, -3),
LOG(2, -3);
Resultat:
+--------+---------+-------------+------------+ | LOG(0) | LOG(-1) | LOG(16, -3) | LOG(2, -3) | +--------+---------+-------------+------------+ | NULL | NULL | NULL | NULL | +--------+---------+-------------+------------+ 1 row in set, 4 warnings (0.001 sec)
Låt oss kontrollera varningarna:
SHOW WARNINGS;
Resultat:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Dessutom måste basen vara större än 1
. Om inte, NULL
returneras:
SELECT
LOG(0, 3),
LOG(1, 3),
LOG(-1, 3);
Resultat:
+-----------+-----------+------------+ | LOG(0, 3) | LOG(1, 3) | LOG(-1, 3) | +-----------+-----------+------------+ | NULL | NULL | NULL | +-----------+-----------+------------+ 1 row in set, 3 warnings (0.000 sec)
Kontrollera varningarna:
SHOW WARNINGS;
Resultat:
+---------+------+---------------+ | Level | Code | Message | +---------+------+---------------+ | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | | Warning | 1365 | Division by 0 | +---------+------+---------------+
Icke-numeriska argument
Här är ett exempel på vad som händer när vi tillhandahåller icke-numeriska argument:
SELECT LOG('Homer', 'Simpson');
Resultat:
+-------------------------+ | LOG('Homer', 'Simpson') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 2 warnings (0.000 sec)
Låt oss se varningen:
SHOW WARNINGS;
Resultat:
+---------+------+-------------------------------------------+ | Level | Code | Message | +---------+------+-------------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Homer' | | Warning | 1365 | Division by 0 | +---------+------+-------------------------------------------+
Nollargument
LOG()
returnerar null
om något argument är null
:
SELECT
LOG(null),
LOG(null, 3),
LOG(16, null),
LOG(null, null);
Resultat:
+-----------+--------------+---------------+-----------------+ | LOG(null) | LOG(null, 3) | LOG(16, null) | LOG(null, null) | +-----------+--------------+---------------+-----------------+ | NULL | NULL | NULL | NULL | +-----------+--------------+---------------+-----------------+
Argument saknas
Anropar LOG()
med fel antal argument, eller utan några argument resulterar i ett fel:
SELECT LOG();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'
Och:
SELECT LOG(10, 2, 3);
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'LOG'